DOS 命令用于删除 file_001.* 副本,但前提是 file.* 存在

DOS 命令用于删除 file_001.* 副本,但前提是 file.* 存在

_001我有一个包含文件的目录树,有时在同一位置有一个副本。此副本由附加到原始文件名的某个字符串(例如)标识。

  • somefile.txt
  • somefile_001.txt

我可以使用以下命令在 DOS 提示符下列出此类文件: dir /s *_001.*

或者

for /f "tokens=1,2 delims=_" %i in ('dir /s /b *_*.*') do echo %i_%j

但我不知道这是否可行,可能使用后一种格式,来检查原始文件是否存在,在这种情况下删除副本。

答案1

您的命令非常接近。尝试以下操作:

for %i in (*) do if exist "%~ni_001%~xi" echo del "%~ni_001%~xi"

检查几个生成的 del 语句进行测试,以证明删除了正确的文件,然后删除“echo”以使删除真正发生。或者,将输出重定向到 del 语句文件并检查。

%~ n 和 x 的内容在“help for”命令的末尾进行了解释。

编辑:%xi 前面不需要 .,因为 . 是 %~xi 返回的扩展的一部分。已修复。

编辑 2:将“del %i”更改为当前格式,因为我误读了原始问题,认为要删除的是已检查的文件,而不是 _001 副本。此外,还添加了引号以保护带空格的文件名。

相关内容