找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24451|回复: 3

[文本处理] [已解決]有條件地將大量檔案移動到不同資料夾

[复制链接]
发表于 2013-5-3 10:04:08 | 显示全部楼层 |阅读模式
本帖最后由 nickl 于 2013-5-3 12:09 编辑

各位大俠你們好,

小弟有大量檔案(檔案名後段 6 個字中, 必定有 AA 二字)需要移動到不同資料夾, 檔案及資料夾放左同一路徑, 形式如下

只根據檔案的頭5個字, 尋找一個頭5個字與檔案相同的資料夾(所有資料夾, 頭5個字必定不同), 把檔案移進去, 如沒有一個資料夾付合條件, 以檔案頭5個字開啟一個新資料夾, 並移進去.

如:
檔案a: ab123 abc ltd 123AA6
檔案b: ab123 abc BCD ltd 222AA2
檔案c: mm111 mmm ltd UK 258AA1
檔案d: FF789 ffff ltd co US 666AA6
檔案e: KK000 KK ltd 622AA2


資料夾a: ab123 abc ltd
資料夾b: mm111 mmm ltd UK
資料夾c: FF789 ffff ltd co US

結果:
檔案a 及 b, 移動到資料夾 a
檔案c, 移動到資料夾 b
檔案d, 移動到資料夾 c
檔案e, 開啟資料夾 kk000, 檔案e 移動到資料夾 kk000

小弟為新手, 自己寫了以下代碼, 但出現標籤語法錯誤, 應該是 "%%a *\ 的問題?
請各位高手多多幫忙, 如不行亦煩請告之, 感激萬分!
  1. @echo off
  2. for /f "tokens=1-20 delims= " %%a in ('dir /b *AA*.*') do (
  3. if not exist "%%a *" md "%%a"
  4. move "%%a %%b %%c*%%d*%%e*%%f*%%g*%%h*%%i*%%j*%%k*%%l*%%m**%%n*%%o*%%p*%%q*%%r*%%s*%%t*" "%%a *"
  5. )
  6. echo sorted
  7. pause
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2013-5-3 10:45:52 | 显示全部楼层
本帖最后由 terse 于 2013-5-3 11:14 编辑

少个 判断了
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%a in ('dir /b /a-d *AA*.*') do (
  3.     set "str=%%a"
  4.     set "files=!str:~,5!"
  5.     for /f "tokens=*" %%b in ('dir /b /ad "!files!*" 2^>nul') do set "files=%%b"
  6.     md "!files!" 2>nul
  7.     move "%%a"  "!files!"

  8. )
  9. echo sorted
  10. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
nickl + 1 問題解決了

查看全部评分

发表于 2013-5-3 11:10:04 | 显示全部楼层
不知道是不是这意思?

  1. @echo off
  2. for /f "tokens=1* delims= " %%a in ('dir /b/a-d *AA*.*') do (
  3.   set "soure=%%a %%b"
  4.   setlocal enabledelayedexpansion
  5.   for /f "delims=" %%i in ('dir /ad/b %%a* 2^>nul') do set "dst=%%i"
  6.   if not defined dst md "%%a" &set "dst=%%a"
  7.   echo move "!soure!" "!dst!"
  8.   endlocal
  9. )
  10. pause
复制代码
 楼主| 发表于 2013-5-3 12:03:36 | 显示全部楼层
本帖最后由 nickl 于 2013-5-3 12:04 编辑

用terse 兄的代碼成功做到了, 原來是少了個判斷
xxpinqz 兄的代碼跟我想做的有些出入, 可能是我說得不夠清楚吧
感謝兩位的回覆!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 04:52 , Processed in 0.020232 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表