也许有人可以提供帮助;我有几个文件具有以下命名约定:
fooR1.txt, fooR2.txt, fooR3.txt, . . . , fooR1000.txt
我希望删除大于R500的所有文件。我有几个文件夹,我知道如何通过每个文件夹,但我不知道如何捕获和删除复制501和更高版本的文件。我怎么能这样做?
答案 0 :(得分:1)
这将删除###大于500的所有文件fooR###.txt
。
@echo off
setlocal EnableDelayedExpansion
for %%f in (fooR*.txt) do (
set num=%%~f
set num=!num:~4,-4!
if !num! gtr 500 del /q "%%~f"
)
endlocal
答案 1 :(得分:0)
简单地说:
ren foo500.txt foo499bis.txt
del fooR5??.txt fooR6??.txt fooR7??.txt fooR8??.txt fooR9??.txt fooR10??.txt
ren foo499bis.txt foo500.txt
不优雅,但效率很高。
答案 2 :(得分:0)
由于您的范围是开放的,我已经改变了您的标准:删除不在1-499范围内的任何内容。请注意,这与您的不完全相同,例如,它还会删除名为fooR001.txt
或fooR_something_else.txt
的文件。
它也很慢。
@echo off
for %%F in (fooR*.txt) do (
echo %%F | findstr /v /r "fooR[1-9]\.txt fooR[1-9][0-9]\.txt fooR[1-4][0-9][0-9]\.txt" >nul && echo del %%F
)
第一行(for
)枚举以fooR
开头的文件,然后为每个文件findstr
检查是否不匹配模式({{1}如果检查(即不匹配)为正(/v
表示仅在前一个命令成功时执行),则最后执行命令。
上面的代码只是回显命令,而不是执行它们,所以你可以安全地运行它来验证它实际上应该按照它应该运行。要实际运行删除,只需删除前面的&&
即可。
注意:您实际上可以通过以下形式直接从命令行运行:
echo
答案 3 :(得分:-1)
您需要为此制作批处理脚本。然后在Batch文件中你可以写。
DEL "fooR500.txt"
要删除所有带有.txt结尾的文件,您只需编写:
DEL "*.txt"
这就是我所知道的,但是如果你想得到它,你就可以拥有500或更高的文件 在Batch中创建一个使用以下值保存值500的变量:
set Value = 500
然后删除文件“fooR”+ Index +“。txt”所以要做到这一点你必须这样做:
set "FilePre = fooR"
set "FileW = %FilePre% %Value%"
set "Ex = .txt"
set "FileX = %FileW% %Ex%"
del FileX
然后你必须让Value上升一个并重复该过程500次,直到它达到1000.