我是命令提示脚本和批处理文件的新手。我有一个包含以下内容的文件夹:
我想删除所有没有" _cropped"的tif文件。在文件名中。我已经看到了一些删除具有指定扩展名或匹配特定字符串的文件的解决方案,但我试图将两者结合起来。
非常感谢,
马克。
答案 0 :(得分:1)
for /f "delims=" %%a in ('dir /b /a-d *.tif^|find /v /i "_cropped"') do echo del "%%a"
应该适合。
也许你想要
pushd "target directoryname"
for /f "delim...
popd
指定要处理的当前目录以外的目录。
为了测试目的,所需的DEL命令仅为ECHO
。 在您确认命令正确后,将ECHO DEL
更改为DEL
以实际删除文件。
答案 1 :(得分:0)
从命令行进入目标目录:
for /F "eol=: delims=" %a in ('dir /b *.tif ^| find /V "_cropped"') do @del "%a"
我们在哪里:
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
在批处理文件中:
for /F "eol=: delims=" %%a in ('dir /b *.tif ^| find /V "_cropped"') do @del "%%a"
我们使用更具互动性的方法进行确认的示例:
通常用作:
the_bat_file.bat exclude_these tif
其中,第一个选项是要排除的文件名中的字符串,两个是文件扩展名。
@echo off
set pat=_cropped
set ext=tif
IF "%1"=="--help" (
echo Usage %0 [exclude] [extension]
echo Default exclude : %pat%
echo Default extension: %ext%
goto end
)
GOTO part1
:confirm
SET /P CONF=Continue y/N?
IF /I "%CONF%" NEQ "Y" GOTO end
goto %con%
:part1
setlocal
IF NOT "%1"=="" set pat=%1
IF NOT "%2"=="" set ext=%2
echo Pattern : %pat%
echo Extension: %ext%
echo.
set con=part2
goto confirm
:part2
echo.
echo Files to delete:
echo.
for /F "eol=: delims=" %%a in ('dir /b "*.%ext%" ^| find /V "%pat%"') do echo "%%a"
echo.
set con=part3
goto confirm
:part3
for /F "eol=: delims=" %%a in ('dir /b "*.%ext%" ^| find /V "%pat%"') do DEL "%%a"
:end
endlocal