首页 > 解决方案 > 从修剪后的文件中覆盖同名文件

问题描述

到目前为止,我已经让我的代码为我工作。对文件进行修剪和重命名后,如果存在同名文件,则不会覆盖该文件。

此批处理文件运行多次,因此第一次运行,第二次无法覆盖之前创建的文件,因为新修剪的文件名与之前创建的文件名相同。

由于此文件名不是恒定的,因此我不确定如何在运行命令之前将其删除,因为该文件夹中会有其他具有相同扩展名(或缺少扩展名)的文件。

xcopy /d "%SystemDrive%\clfiles\*xp21.tap" 
"\\nphdata\Departments\M.E\N1040_MACHINING\OFFICE\PROGRAM_HOLD
\MS200\*xp21*" /y

set Source="\\nphdata\Departments\M.E\N1040_MACHINING\OFFICE\PROGRAM_HOLD\MS200"
for %%c in (%Source%\*xp21*) do (
    set MS200Trimmed=%%~nc
    set MS200Trimmed=!MS200Trimmed:~0,8!%
    ren "%%~c" !MS200Trimmed!
)

标签: batch-filerenameoverwrite

解决方案


就在 "ren "%%~c" !MS200Trimmed!" 之前 行,添加删除命令。

xcopy /d "%SystemDrive%\clfiles\*xp21.tap" 
"\\nphdata\Departments\M.E\N1040_MACHINING\OFFICE\PROGRAM_HOLD
\MS200\*xp21*" /y

set Source="\\nphdata\Departments\M.E\N1040_MACHINING\OFFICE\PROGRAM_HOLD\MS200"
for %%c in (%Source%\*xp21*) do (
    set MS200Trimmed=%%~nc
    set MS200Trimmed=!MS200Trimmed:~0,8!%
    del !MS200Trimmed! 
    ren "%%~c" !MS200Trimmed!
)

推荐阅读