我正在嘗試撰寫一個批處理檔案來將一些 pdf 排序到相應的目錄。例如。xxx1_date.pdf 到 DIR1,xxx2_date.pdf 到 DIR2。下面是我在這個網站上找到的一個腳本中的代碼。謝謝你。
SetLocal EnableDelayedExpansion
dir /b /a-d *.pdf > file.log
for /f "tokens=1* delims=_" %%f in (file.log) do (
set line=%%f
call :processToken
)
goto :eof
:processToken
for /f "tokens=1* delims=_" %%a in ("%line%") do (
IF "%%a"=="04693139" move %%a* DIR1
IF "%%a"=="34051646" move %%a* DIR2
)
if not "%line%" == "" goto :processToken
goto :eof
uj5u.com熱心網友回復:
在您的代碼中,file.log應包含行,例如:
xxx1_date1.pdf
xxx2_date2.pdf
第一個回圈將分配xxx1給%%f,然后分配給line并處理它;然后分配xxx2給%%f,然后分配給line并處理它。
"Token 1" 是直到第一個_(分隔符)的字串,并分配給%%f.
“Token *”是第一個_(分隔符)之后的字串,分配給%%g.
由于linecontains xxx1and ,xxx2nextfor將分配to和nothing to因為分隔符又是。xxx1xxx2%%a%%b_
由于既不xxx1也不xxx2匹配兩個日期字串,因此move不會發生。
無論如何,lineis 沒有被改變并且不是空的,所以if not ...永遠是真的,你將進入一個無限回圈。
現在,一旦您意識到檔案名的哪些部分將出現在哪里,您就可以修復您的代碼,或者您可以通過簡單地執行來完成任務
move *_04693139.pdf DIR1
move *_34051646.pdf DIR2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/435561.html
