如何使用原始文件名中包含部件的新名称复制文件?

时间:2017-04-20 03:45:29

标签: batch-file

我有一堆名为383DT_SBY_20170420_08_C.ps380_DB_20170421_08_C.ps等的文件 我正在尝试创建一个脚本,该脚本会自动将其复制并重命名为SBY_20170420_08.psDB_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"

1 个答案:

答案 0 :(得分:0)

  • 在尝试复制之前测试文件是否存在。
  • 如果您只需要代币2到4,则无需将1和5放入vars
  • 如果(映射的)驱动器不可用,则单独的驱动器更改和CD不起作用,最好使用CD /DPushd并检查成功
  • 如果arg与*_*_*_*_*.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%
)