Board logo

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

作者: meiszp    时间: 2015-9-8 13:22     标题: 批处理如何将多个文件名相同扩展名/后缀名不同的文件移动到以文件名命名的文件夹里

本帖最后由 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
作者: kingshui    时间: 2015-9-8 13:30

文件名的规律要出来吧?这种的不是用通配符就可以搞定了么?
作者: 回家路上    时间: 2015-9-8 14:18

  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. )
复制代码

作者: meiszp    时间: 2015-9-8 20:26

回复 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
作者: 回家路上    时间: 2015-9-8 20:49

回复 4# meiszp


不用再举例了,直接上传附件吧
作者: meiszp    时间: 2015-9-8 21:03

回复 5# 回家路上
这些文件太大了,还不在我的电脑上,明天整理下再发吧。
作者: 回家路上    时间: 2015-9-8 22:39

回复 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目录下运行?然后不好使?我这脚本也没考虑你文件名格式是啥呀。
作者: meiszp    时间: 2015-9-9 10:08

回复 7# 回家路上
您好!这两个例子使用都不成功,麻烦看看。谢谢!
作者: 回家路上    时间: 2015-9-9 10:49

本帖最后由 回家路上 于 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下运行,并未发现不妥
作者: flyinnet9    时间: 2015-9-9 10:55

万能的批处理,请帮我实现愿望吧~~~
作者: meiszp    时间: 2015-9-9 11:44

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

回复 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
复制代码

作者: meiszp    时间: 2015-9-9 22:37

回复 12# 回家路上

谢谢!大侠!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2