Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 删除文件夹中的所有文件,但跳过包含特定字符串的文件_Windows_Batch File_Cmd - Fatal编程技术网

Windows 删除文件夹中的所有文件,但跳过包含特定字符串的文件

Windows 删除文件夹中的所有文件,但跳过包含特定字符串的文件,windows,batch-file,cmd,Windows,Batch File,Cmd,我正在尝试清理临时文件,但我想跳过一些包含特定名称的文件。不管它是什么延伸 试着这样做: @echo off setlocal EnableDelayedExpansion for /f "eol=: delims=" %F in ('dir "%windir%/temp" /b /a-d * ') do find "TESTE" %F > nul || del "%F" pause 删除时跳过了名为TESTE的所有文件 但我的脚本甚至没有运行 有人能告诉我怎么回事吗?您应该能够使用f

我正在尝试清理临时文件,但我想跳过一些包含特定名称的文件。不管它是什么延伸

试着这样做:

@echo off
setlocal EnableDelayedExpansion
for /f "eol=: delims="  %F in ('dir "%windir%/temp" /b /a-d * ') do find "TESTE" %F > nul || del "%F"
pause
删除时跳过了名为
TESTE
的所有文件

但我的脚本甚至没有运行


有人能告诉我怎么回事吗?

您应该能够使用
findstr.exe
及其
/V
/M
选项来列出不需要的文件

@SetLocal EnableExtensions
@对于/F“Delims=”%%G In(
“%\uuuu AppDir\uuuu%findstr.exe/VPMLI”测试“%SystemRoot%\TEMP\*”2^>NUL”
)Do@Del/A/F“%%G”
@停顿

请注意,
\Windows\Temp
目录通常是受保护的,因此您可能需要“以管理员身份”运行此脚本。

您应该能够使用
findstr.exe
及其
/V
/M
选项来列出不需要的文件

@SetLocal EnableExtensions
@对于/F“Delims=”%%G In(
“%\uuuu AppDir\uuuu%findstr.exe/VPMLI”测试“%SystemRoot%\TEMP\*”2^>NUL”
)Do@Del/A/F“%%G”
@停顿

请注意,
\Windows\Temp
目录通常是受保护的,因此您可能需要“以管理员身份”运行此脚本。

不完全清楚您是否要从删除中排除名称或内容包含特定字符串的文件;无论如何,这是针对前者的:

pushd“%WinDir%\TEMP”&(
对于/F“delims=eol=|”%%F英寸('
目录/B/A:-D“***”^ findstr/V/I/C:“测试”
""做"(
回音删除/F“%%F”
)
邻苯二胺
)
对输出满意后,删除大写的
ECHO
命令


上述脚本也不会删除扩展名包含给定字符串的文件。但是,如果只考虑基名称,则可能需要使用以下代码:

pushd“%WinDir%\TEMP”&(
对于/F“delims=eol=|”%%F英寸('
目录/B/A:-D“***”
""做"(
设置“NAME=%%~nF”
setlocal EnableDelayedExpansion
if/I“!NAME:TESTE=!”==“!NAME!”(
端部
回音删除/F“%%F”
)else endlocal
)
邻苯二胺
)

不完全清楚是否要从删除中排除名称或内容包含特定字符串的文件;无论如何,这是针对前者的:

pushd“%WinDir%\TEMP”&(
对于/F“delims=eol=|”%%F英寸('
目录/B/A:-D“***”^ findstr/V/I/C:“测试”
""做"(
回音删除/F“%%F”
)
邻苯二胺
)
对输出满意后,删除大写的
ECHO
命令


上述脚本也不会删除扩展名包含给定字符串的文件。但是,如果只考虑基名称,则可能需要使用以下代码:

pushd“%WinDir%\TEMP”&(
对于/F“delims=eol=|”%%F英寸('
目录/B/A:-D“***”
""做"(
设置“NAME=%%~nF”
setlocal EnableDelayedExpansion
if/I“!NAME:TESTE=!”==“!NAME!”(
端部
回音删除/F“%%F”
)else endlocal
)
邻苯二胺
)

尝试
键入“%F”|查找“TESTE”| del“%F”
并修复命令,执行
\
而不是
'dir”%windir%\temp”/b/a-d*“
如果这是一个批处理文件,则必须将百分比增加一倍:
%F
尝试
执行
键入“%F”|查找“TESTE”\temp”/del F”
并修复命令,做
\
而不是像
'dir”%windir%\temp“/b/a-d*”
这样的
\
如果这是一个批处理文件,你必须加倍百分比,就像这样:
%%F
请检查我的
编辑1
@BlackMamba,更正我的第二个脚本以不删除匹配的文件;此外,我回滚了您的编辑,因为它实际上构成了一个新问题(删除子目录),您应该在一篇新文章中提出这个问题(最好链接到这个问题);您不应更改或扩展问题的范围,尤其是当已经有答案时,因为它们看起来不完整…请检查我的
Edit 1
@BlackMamba,更正我的第二个脚本以不删除匹配的文件;此外,我回滚了您的编辑,因为它实际上构成了一个新问题(删除子目录),您应该在一篇新文章中提出这个问题(最好链接到这个问题);你不应该改变或扩大一个问题的范围,特别是当已经有答案时,因为它们看起来不完整…