我想要在Windows 7上创建一个脚本来删除目录中所有不是图片的内容。所以
for all files in directory X
if file y does not have extension in (.png, .gif, .jpeg)
delete y
end就这样
我如何找到或创建这样的脚本?
请注意,有些图片很重要,所以这个脚本必须正确工作:)我不认为我应该在这里进行实验,即使我在一个带有实验文件的小目录上测试了我自己的脚本,我也不相信我应该尝试它。
我有这样的代码:
::extensions are delimited with space // filename is del_stuff.bat
set "extensions_list=.png .gif .jpeg .bmp .jpg "
pushd "C:\Users\denman\Desktop\xxx\"
for /f "delims=" %%f in ('dir /b ^|findstr /i /e /v "%extensions_list%" ') do (
echo del /q /f "%%~f"
)
popd但我知道这个错误:

发布于 2014-09-05 21:09:32
@echo off
::extensions are delimited with space
set "extensions_list=.png .gif .jpeg "
pushd "C:\Directory_with_pictures" && (
for /f "delims=" %%f in ('dir /b /a-d ^|findstr /i /e /v "%extensions_list%" ') do (
echo del /q /f "%%~f"
)
popd
)“回波”是验证结果,.remove,回波,以激活deletion.And更改"C:\Directory_with_pictures"与实际路径。
编辑测试脚本:
@echo off
md test_dir>nul 2>&1
echo #>test_dir\t1.png
echo #>test_dir\t1.txt
echo #>test_dir\t1.tst
echo #>test_dir\t1.jpg
echo #>test_dir\t1.gif
echo #>test_dir\t2.png
echo #>test_dir\t2.txt
echo #>test_dir\t2.tst
echo #>test_dir\t2.jpg
echo #>test_dir\t2.gif
echo -- before deleting--
dir /b .\test_dir\*
echo(
echo(
::extensions are delimited with space
set "extensions_list=.png .gif .jpeg .jpg"
pushd "test_dir"
for /f "delims=" %%f in ('dir /b ^|findstr /i /e /v "%extensions_list%" ') do (
del /q /f "%%~f"
)
popd
echo -- after deleting --
dir /b .\test_dir\*输出:
-- before deleting--
t1.gif
t1.jpg
t1.png
t1.tst
t1.txt
t2.gif
t2.jpg
t2.png
t2.tst
t2.txt
-- after deleting --
t1.gif
t1.jpg
t1.png
t2.gif
t2.jpg
t2.png发布于 2014-09-05 21:11:13
使用Powershell,您可以获得需要的文件列表,如下所示:
Get-ChildItem | where {!$_.PsIsContainer -and !(@(".png",".gif",".jpeg") -contains $_.Extension) }我把删除命令留给了您,确保列表在执行之前返回正确的结果。
https://stackoverflow.com/questions/25693847
复制相似问题