我在使用.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