2017-04-20 24 views
1

我有一堆名稱爲383DT_SBY_20170420_08_C.ps,380_DB_20170421_08_C.ps等文件
我想創建一個腳本,將自動複製並重命名爲SBY_20170420_08.ps,DB_20170421_08.ps如何用原始文件名中的部分複製具有新名稱的文件?

以下腳本用於工作,但現在它告訴我它找不到指定的文件。

@echo off 
T: 
cd \PROOFS\out\ 
for /f "tokens=1,2,3,4,5 delims=_ " %%a in ("%1") do set first=%%a&set second=%%b&set third=%%c&set fourth=%%d&set fifth=%%e 
copy %1 Renamed\"%second%%third%_%fourth%.ps" 
+2

這個批處理文件是如何調用的?什麼是用'%1'引用的第一個參數?我建議在__FOR__命令行上將'「%1」'更改爲'「%〜1」'。在命令提示符窗口'call /?'中運行以獲取有關如何引用批處理文件參數的幫助。運行'for /?'來獲得關於命令__FOR__的幫助。另外最好使用'copy「%〜1」「Renamed \%second %% third%_%fourth%.ps」',即始終將源和目標完全用雙引號括起來。 – Mofi

回答

0
  • 測試文件之前試圖複製它的存在。
  • 如果你只需要標記2至4,有沒有必要把1和5到瓦爾
  • 如果(映射)驅動器不可用的單獨驅動變化和CD不工作,更好地運用CD /DPushd檢查成功
  • 批次取決於傳遞的參數,如果阿根廷不匹配*_*_*_*_*.ps將失敗
  • 如果該批你需要一個額外的for循環
模式處理所有文件
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 
CD /D "T:\PROOFS\out\" || pause & goto :Eof 
for /f "tokens=2-4 delims=_" %%a in ("%~1") do If exist "%~1" (
    copy "%~1" "Renamed\%%a_%%b_%%c%~x1" 
) else (
    Echo %~1 doesn*t exist in %CD% 
) 
相關問題