我在使用.BAT文件中的FOR DO命令時遇到了一些問題。 這是我與使用.BAT文件中的FOR命令進行解析
SET parent="%~dp0"
SET GroomedDir="%~dp0Groomed\"
XCOPY /s/e/y Groomed %parent%NewGroomed\
CD NewGroomed
setlocal enabledelayedexpansion
FOR %%i in (IMG_*.jpg) DO (
SET OldName=%%i
SET ImgNumber=!OldName:~4,-4!
SET DBLookup=FINDSTR !ImgNumber! Database.txt
!DBLookup! > return.txt
FOR /F "tokens=1-5 delims=|" %%J in (return.txt) do (
REN !OldName! "%%K_%%L.jpg"
MKDIR %%M\%%N
MOVE "%%K_%%L.jpg" %%M\%%N
)
)
del return.txt
endlocal
cd ..
ren Groomed "Groomed Backup"
ren NewGroomed Groomed
麻煩進來線12-14工作的整個代碼(我把行分隔符)。我似乎無法將變量%DBLookup%放入FOR命令中,而是被迫改爲使用佔位符文本文件。它最終會起作用,但將自己的寫入保存到return.txt操作以及讀取return.txt操作會不會更好?
爲背景,return.txt包含一條從這樣的文字:
115525 | Last_First | 5233 | 8 |教師
我使用FOR命令,因爲它可以讓我用劃管道字符或其他任何內容,並輸出到%% J %% K %% L %% M和%% N個變量。
任何幫助或建議這個相對新人非常感謝!
這裏是我的代碼以我的意見:
REM THESE FOUR LINES:
REM 1) SET A VARIABLE FOR THE PARENT DIRECTORY LOCATION,
REM 2) SET A VARIABLE FOR THE GROOMED DIRECTORY,
REM 3) COPY THE GROOMED DIRECTORY TO "NEWGROOMED\",
REM 4) CHANGE THE LOCATION TO BE WORKING ENTIRELY WITHING NEWGROOMED\
SET parent="%~dp0"
SET GroomedDir="%~dp0Groomed\"
XCOPY /s/e/y Groomed %parent%NewGroomed\
CD NewGroomed
REM THIS FOR LOOP LOADS ALL JPGS IN THE \NEWGROOMED\ DIRECTORY THAT BEGIN WITH THE STRING, "IMG_"
setlocal enabledelayedexpansion
FOR %%i in (IMG_*.jpg) DO (
SET OldName=%%i
REM THIS LINE COPIES THE OLD NAME MINUS THE FIRST FOUR CHARACTERS, "IMG_", AND MINUS THE EXTENSION (LAST 4 CHARS)
SET ImgNumber=!OldName:~4,-4!
REM THESE NEXT TWO LINES LOOK UP OUR IMAGE NUMBER IN DATABASE.TXT AND RETURN THE ENTIRE LINE TO A NEW FILE CALLED RETURN.TXT
SET DBLookup=FINDSTR !ImgNumber! Database.txt
!DBLookup! > return.txt
REM NOW WE PARSE RETURN.TXT USING PIPE DELIMITERS INTO THE VARIABLES J,K,L,M,N (ID,Name,IMG#,Grade,Homeroom)
FOR /F "tokens=1-5 delims=|" %%J in (return.txt) do (
REN !OldName! "%%K_%%L.jpg"
MKDIR %%M\%%N
MOVE "%%K_%%L.jpg" %%M\%%N
)
)
del return.txt
endlocal
cd ..
ren Groomed "Groomed Backup"
ren NewGroomed Groomed
總的來說,我的目標是要開始一個文件夾,「疏導」,帶着一幫評爲此類圖像:IMG _ #### JPG。
我的批處理文件將:
1)創建整個起始目錄
2)根據database.txt文件
3重命名每個圖像的備份)移動每個圖像重命名成一個新的年級/教師名稱文件夾
我從一個文件(database.txt)開始,從另一位員工那裏找到我。該文件是以下格式的每個學生的普通列表:學生ID |姓氏名|圖像#|等級#|教師名。
正如我所提到的。該文件完美地工作,但由於我是批處理文件的新手,我感覺像寫一個一次性文件來保存一個字符串然後刪除它可能是愚蠢的。這就是變量的用途,但我很難讓這個變量進入FOR命令。 Database.txt
659968|Saperstein_Ryan|4603|7|Hallock
015520|Qian_Emily|2528|7|Hallock
528852|Rizzo_Jason|4618|7|Krukowski
和一些文件名我的
樣品我開始有:
IMG_2528.jpg
IMG_4544.jpg
IMG_7044.jpg
IMG_6880.jpg
IMG_4839.jpg
嘿保羅,我會在我的問題的糊底的大塊我註釋版本。謝謝! – Chucksef
編輯:它格式不好,所以我會再次將它添加到問題的結尾! – Chucksef
正確更正重命名。我想確定如何僅合併文件名並同時刪除Img_。 – Chucksef