从多个文件中删除中间数字并复制

从多个文件中删除中间数字并复制

我在特定文件夹中拥有特定格式的多个 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“文件”,因为它明确指定了新的目标文件名,并在循环中解析第三个标记以帮助获取所需的文件名。复制命令后跟条件执行(&&)确认它是否成功,然后在删除原始源文件之前确认新的目标文件的存在。


更多资源

相关内容