我一直试图通过混合使用不同的批处理命令(复制,forfiles)来弄清楚如何做到这一点,但是我无法找出一个恰到好处的,执行复制,重命名并考虑目录位置。
我有一个不同级别的目录结构,其中包含许多文件,但是它们大多都有" folder.jpg"。
类似于:
我想扫描一下,对于任何名为" folder.jpg"的文件,制作副本,并将其重命名为" child1-img.jpg"。然后我会在我的结构中看到:
我可以从目录运行并且只影响子目录的批处理脚本是完美的。
非常感谢您提供任何指导,如果我遗漏了任何重要细节,请告诉我。
修改
@保罗
嗨,保罗,似乎想要创建一个文件夹名称的每个部分的文件?我在下面有一个日志输出。我正在读这个吗?
START LOOP
COPY "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Folder\
folder.jpg" "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Fo
lder\New-img.jpg"
END LOOP
Press any key to continue . . .
COPY "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Folder\
folder.jpg" "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Fo
lder\A-img.jpg"
END LOOP
Press any key to continue . . .
COPY "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Folder\
folder.jpg" "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Fo
lder\Test-img.jpg"
END LOOP
Press any key to continue . . .
COPY "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Folder\
folder.jpg" "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Fo
lder\Second-img.jpg"
END LOOP
Press any key to continue . . .
COPY "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Folder\
folder.jpg" "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Fo
lder\Test-img.jpg"
END LOOP
Press any key to continue . . .
COPY "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Folder\
folder.jpg" "C:\Users\Mikey\Desktop\blah\New Folder\A Test Folder\Second Test Fo
lder\Folder-img.jpg"
END LOOP
答案 0 :(得分:1)
==运行脚本之前的目录结构
C:>dir /s /b /a-d
C:\Users\pwatson\test\parent\chi ld3\child4\folder.jpg
C:\Users\pwatson\test\parent\chi ld3\child5\folder.jpg
C:\Users\pwatson\test\parent\child1\folder.jpg
C:\Users\pwatson\test\parent\child2\folder.jpg
==脚本
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "usebackq tokens=*" %%d in (`dir /s /b folder.jpg`) DO (
SET DIRPATH=%%~dpd
IF "!DIRPATH:~-1!" EQU "\" (
SET DIRPATH=!DIRPATH:~0,-1!
)
FOR %%f IN ("!DIRPATH!") DO (
SET PICDIR=%%~nxf
COPY "%%d" "!DIRPATH!\!PICDIR!-img.jpg"
)
)
EXIT /B 0
==运行脚本后的目录结构
C:>dir /s /b /a-d
C:\Users\pwatson\test\parent\chi ld3\child4\child4-img.jpg
C:\Users\pwatson\test\parent\chi ld3\child4\folder.jpg
C:\Users\pwatson\test\parent\chi ld3\child5\child5-img.jpg
C:\Users\pwatson\test\parent\chi ld3\child5\folder.jpg
C:\Users\pwatson\test\parent\child1\child1-img.jpg
C:\Users\pwatson\test\parent\child1\folder.jpg
C:\Users\pwatson\test\parent\child2\child2-img.jpg
C:\Users\pwatson\test\parent\child2\folder.jpg