從多個文件中刪除中間數字並複製

從多個文件中刪除中間數字並複製

我在特定資料夾中有多個特定格式的 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“文件”,因為它明確指定新的目標文件名,解析循環中的第三個標記以幫助獲取所需的文件名。這複製命令後面跟著條件執行 (&&)確認成功,然後在刪除原始來源檔案之前確認新目標檔案的存在。


更多資源

相關內容