今天非常紧张,我很长一段时间StackOverflow偷窥即将问我的第一个问题所以我希望我不要吮吸它。我可以使用控制台应用程序之类的东西轻松执行以下任务,但我希望可以在批处理脚本中执行此操作,而且我根本不了解批处理脚本。
我想删除目录中除名称与特定模式匹配的文件之外的所有文件。此目录中此类文件的典型示例如下:
我想删除名称与
匹配的所有文件最后一个下划线是关键。如果我使用C#或其他东西,我会将名称提取为字符串,删除所有文本" invoice _"然后查看是否有剩余的下划线 - 这将是匹配,例如
希望这是有道理的。如果这不是一个合适的问题,请告诉我。
非常感谢
答案 0 :(得分:1)
for /f "tokens=*" %%a in (
'dir /a-d /b *.pdf ^| findstr /v /r /c:"invoice_[0-9][0-9]*_.*\.pdf$"'
) do echo del "%%a"
如果输出到控制台是正确的,请删除echo
命令
答案 1 :(得分:0)
@ECHO Off
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir"
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*" '
) DO (
SET "filename=%%a"
SET "filename=!filename:*invoice_=!"
IF "!filename!"=="!filename:_=!" ECHO DEL "%sourcedir%\%%a"
)
GOTO :EOF
为了测试目的,所需的DEL命令仅为ECHO
。 在您确认命令正确后,将ECHO DEL
更改为DEL
以实际删除文件。
您需要自然地将sourcedir
更改为适合。
这遵循您的how I'd do it in C
而不是您的叙述规范。