[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何将多个文件名相同扩展名/后缀名不同的文件移动到以文件名命名的文件夹里

本帖最后由 pcl_test 于 2017-1-9 06:28 编辑

现在目录Fatigue/S 和Fatigue/T 下有许多文件夹(见图1),每个文件夹下又有许多文件(见图2),求将相同名字的不同扩展名的文件放在以文件名命名的文件夹下的批处理,批处理在Fatigue文件下运行,谢谢!

如dlc1.1f文件夹下有
dlc1.1fc1.%101
dlc1.1fc1.%102
dlc1.1fc1.%103         放在dlc1.1f/dlc1.1fc1新建文件夹下
dlc1.1fc1.%104
dlc1.1fc1.%AE

dlc1.1fc2.%04
dlc1.1fc2.%05
dlc1.1fc2.%06            放在dlc1.1f/dlc1.1fc2新建文件夹下
dlc1.1fc2.%07
dlc1.1fc2.%08
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

文件名的规律要出来吧?这种的不是用通配符就可以搞定了么?

TOP

  1. @echo off
  2. for /f "delims=" %%a in ('dir /b /ad') do (
  3. for /f "delims=" %%b in ('dir /b /ad "%%a"') do (
  4. pushd "%%a\%%b"
  5. for /f "delims=" %%i in ('dir /b /a-d') do (
  6. if not exist "%%~ni\" md "%%~ni"
  7. move /y "%%i" "%%~ni\" >nul 2>&1
  8. )
  9. popd
  10. )
  11. )
复制代码
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 3# 回家路上

谢谢!举的例子有点特殊了,dlc1.1f文件夹下的文件都是以dlc1.1f开头的,如果任意名称的文件夹,此批处理就不能实现了分类了。求任意名称的批处理,谢谢!

比如dlc1.1f文件下有文件

c1.%101
c1.%102
c1.%103         放在dlc1.1f/c1新建文件夹下
c1.%104
c1.%AE

c2.%04
c2.%05
c2.%06            放在dlc1.1f/c2新建文件夹下
c2.%07
c2.%08

TOP

回复 4# meiszp


不用再举例了,直接上传附件吧
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 5# 回家路上
这些文件太大了,还不在我的电脑上,明天整理下再发吧。

TOP

回复 6# meiszp


确认你的目录结构是:
  1. Fatigue
  2.   └─S
  3.       ├─dlc1.1f
  4.       │  ├─c1.%xxx
  5.       │  ├─c1.%yyy
  6.       │  ├─c2.%xxx
  7.       │  └─c2.%yyy
  8.       └─dlc6.4
  9.          ├─c1.%xxx
  10.          ├─c1.%yyy
  11.          ├─c2.%xxx
  12.          └─c2.%yyy
复制代码
然后,批处理在Fatigue目录下运行?然后不好使?我这脚本也没考虑你文件名格式是啥呀。
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 7# 回家路上
您好!这两个例子使用都不成功,麻烦看看。谢谢!

TOP

本帖最后由 回家路上 于 2015-9-9 10:57 编辑

回复 8# meiszp


上传了五个附件,却是两种不同的目录结构,
一种,比你描述的多一层
一纵,比你描述的少一层
然后批处理都华丽的放在了第一层运行
并不清楚你这到底是几层,想放在那个目录下运行。不带这样的啊(⊙﹏⊙)b
  1. 如果是
  2. F
  3. ├─S
  4. │  ├─dlc1.1f
  5. │  │    ├─dlc1.1fb1.$TE
  6. │  │    ├─dlc1.1fb1.$VE
  7. │  │    ├─dlc1.1fb2.$TE
  8. │  │    ├─dlc1.1fb2.$VE
  9. │  │    ├─dlc1.1fc1.$TE
  10. │  │    └─dlc1.1fc1.$VE
  11. │  └─dlc6.1f
  12. │       ├─dlc6.4a2.$TE
  13. │       └─dlc6.4a2.$VE
  14. └─T
复制代码
放在F下运行,并未发现不妥
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

万能的批处理,请帮我实现愿望吧~~~

TOP

回复 9# 回家路上
不好意思,没想到会对层数有要求,以为只要是子目录就可以。有通用的解决方案吗?

TOP

回复 11# meiszp
  1. @echo off
  2. for /f "delims=" %%a in ('dir /b /s') do (
  3. if not exist "%%a\" if "%%~na" neq "%~n0" (
  4. md "%%~dpna\" >nul 2>&1
  5. move /y "%%~fa" "%%~dpna\" >nul 2>&1
  6. )
  7. )
  8. pause & exit /b
复制代码
1

评分人数

人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 12# 回家路上

谢谢!大侠!

TOP

返回列表