_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 副本。此外,还添加了引号以保护带空格的文件名。