【发布时间】:2019-03-31 08:38:58
【问题描述】:
到目前为止,我已经让我的代码为我工作。对文件进行修剪和重命名后,如果存在同名文件,则不会覆盖该文件。
这个批处理文件运行了多次,所以第一次运行,第二次它不能覆盖之前创建的文件,因为新修剪的文件名与之前创建的文件名相同。
由于这个文件名不是固定的,我不确定如何在运行命令之前删除它,因为该文件夹中会有其他具有相同扩展名(或缺少扩展名)的文件。
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!
)
【问题讨论】:
-
请改用
move命令。但是我并没有关注您如何认为在重命名命令之前无法删除它。如果重命名不起作用,您已经知道文件名是什么。只需在重命名命令之前发出删除命令:del !MS200Trimmed!。我假设您已启用延迟扩展。 -
我之前尝试过移动命令,但没有成功,但可能我的格式不正确。我尝试在 (%Source%*xp21*) 中为 %%c 做 ( set MS200Trimmed=%%~nc set MS200Trimmed=!MS200Trimmed:~0,8!% move "%%~c" !MS200Trimmed!) 我不是确定如何在这些论坛上正确格式化,就像我最初的帖子一样......
-
SET命令中有一个尾随百分比符号。 -
是的,我确实延迟了扩展,也许我会发布我的整个代码,因为它可能会使它更容易。无论如何,我已经尝试过 del !MS200Trimmed!以前没有运气,我不确定我在这里缺少什么..
-
您还应该引用任何文件名或路径。您没有引用
!MS200Trimmed!变量。如果您应该向我们提供一个失败的文件名的真实示例,它也会对我们有所帮助。
标签: batch-file rename overwrite