我想删除当前目录中名称中不包含字符串“sample”的所有文件。
例如,
test_final_1.exe
test_initial_1.exe
test_sample_1.exe
test_sample_2.exe
我想删除名称中包含 sample 的文件以外的所有文件。
for %i in (*.*) do if not %i == "*sample*" del /f /q %i
Is the use of wild card character in the if condition allowed?
Does, (*.*) represent the current directory?
感谢。
答案 0 :(得分:6)
最简单的方法是使用带有/V
选项的FIND或FINDSTR来查找不包含字符串的名称,并使用/I
选项进行不区分大小写的搜索。切换到FOR /F
并将结果DIR
传递给FIND
。
for /f "eol=: delims=" %F in ('dir /b /a-d * ^| find /v /i "sample"') do del "%F"
如果在批处理文件中使用,则将%F更改为%% F.
答案 1 :(得分:2)
setlocal EnableDelayedExpansion
for %i in (*.*) do (set "name=%i" & if "!name!" == "!name:sample=!" del /f /q %i)
答案 2 :(得分:2)
Aacini的答案为我工作。我需要一个bat文件来解析目录树,找到所有带有xyz文件扩展名的文件,并且路径中的任何地方都不包含badvalue。解决方案是:
setlocal enableDelayedExpansion
for /r %%f in (*.xyz) do (
set "str1=%%f"
if "!str1!" == "!str1:badvalue=!" (
echo Found file with xyz extension and without badvalue in path
)
)