CMD删除文件

时间:2012-09-04 22:30:20

标签: cmd delete-file

也许有人可以提供帮助;我有几个文件具有以下命名约定:

fooR1.txt, fooR2.txt, fooR3.txt, . . . , fooR1000.txt  

我希望删除大于R500的所有文件。我有几个文件夹,我知道如何通过每个文件夹,但我不知道如何捕获和删除复制501和更高版本的文件。我怎么能这样做?

4 个答案:

答案 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.txtfooR_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.

相关问题