我在特定文件夹中拥有特定格式的多个 PDF 文件,对于那些特定文件,我需要使用 bat 文件修剪中间数字并以新名称移动到目标文件夹。
细节
源文件夹:
C:/roger/brawn
目的地:
D:/var/lag
文件格式:
eAWI_12345678_89101112_01Mar2018.pdf
期望结果
我需要修剪89101112
从原始源文件名中得到结果eAWI_12345678_01Mar2018.pdf
此文件名数字格式是使用应用程序中的变量动态生成的。
答案1
您可以使用为/F循环并将文件名中的下划线字符设置为分隔符。您可以使用标记1,2,3,*
稍后连接变量,以相应地构建和解析源文件名和目标文件名,以供稍后使用复制命令来获得所需的结果。
批处理脚本
@ECHO ON
SET Source=c:/roger/brawn
SET Destination=D:/var/lag
FOR /F "TOKENS=1,2,3,* DELIMS=_" %%F IN ('DIR /B /A-D "%source%\*.pdf"') DO ECHO F | XCOPY /Y /F "%source%\%%F_%%G_%%H_%%I" "%Destination%\%%F_%%G_%%I" && IF EXIST "%Destination%\%%F_%%G_%%I" DEL /Q /F "%source%\%%F_%%G_%%H_%%I"
EXIT
笔记:这回声命令通过管道传输F
到复制命令,因此它隐式地选择F
“文件”,因为它明确指定了新的目标文件名,并在循环中解析第三个标记以帮助获取所需的文件名。复制命令后跟条件执行(&&)确认它是否成功,然后在删除原始源文件之前确认新的目标文件的存在。