标题: [文本处理] [已解決]有條件地將大量檔案移動到不同資料夾 [打印本页]
作者: nickl 时间: 2013-5-3 10:04 标题: [已解決]有條件地將大量檔案移動到不同資料夾
本帖最后由 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 *\ 的問題?
請各位高手多多幫忙, 如不行亦煩請告之, 感激萬分!- @echo off
- for /f "tokens=1-20 delims= " %%a in ('dir /b *AA*.*') do (
- if not exist "%%a *\" md "%%a"
- move "%%a %%b %%c*%%d*%%e*%%f*%%g*%%h*%%i*%%j*%%k*%%l*%%m**%%n*%%o*%%p*%%q*%%r*%%s*%%t*" "%%a *\"
- )
- echo sorted
- pause
复制代码
作者: terse 时间: 2013-5-3 10:45
本帖最后由 terse 于 2013-5-3 11:14 编辑
少个 判断了- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=*" %%a in ('dir /b /a-d *AA*.*') do (
- set "str=%%a"
- set "files=!str:~,5!"
- for /f "tokens=*" %%b in ('dir /b /ad "!files!*" 2^>nul') do set "files=%%b"
- md "!files!" 2>nul
- move "%%a" "!files!"
-
- )
- echo sorted
- pause
复制代码
作者: xxpinqz 时间: 2013-5-3 11:10
不知道是不是这意思?- @echo off
- for /f "tokens=1* delims= " %%a in ('dir /b/a-d *AA*.*') do (
- set "soure=%%a %%b"
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /ad/b %%a* 2^>nul') do set "dst=%%i"
- if not defined dst md "%%a" &set "dst=%%a"
- echo move "!soure!" "!dst!"
- endlocal
- )
- pause
复制代码
作者: nickl 时间: 2013-5-3 12:03
本帖最后由 nickl 于 2013-5-3 12:04 编辑
用terse 兄的代碼成功做到了, 原來是少了個判斷
xxpinqz 兄的代碼跟我想做的有些出入, 可能是我說得不夠清楚吧
感謝兩位的回覆!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |