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

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

本帖最后由 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
复制代码
1

评分人数

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

本帖最后由 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

评分人数

    • nickl: 問題解決了技术 + 1

TOP

不知道是不是这意思?
  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
复制代码

TOP

本帖最后由 nickl 于 2013-5-3 12:04 编辑

用terse 兄的代碼成功做到了, 原來是少了個判斷
xxpinqz 兄的代碼跟我想做的有些出入, 可能是我說得不夠清楚吧
感謝兩位的回覆!

TOP

返回列表