我希望通过删除不需要的视频(AVI)文件来整理完整的存档驱动器。
我需要做的是从主目录的文件夹和子文件夹中删除AVI文件。但是,我不想从文件夹名称包含文本“PG”的任何文件夹中删除AVI文件 - 通常是“G1244A PG报告”形式,但识别代码(在本例中为“G1244A”)的长度可能不同。 感谢。
在@tftd评论后添加: 这是我到目前为止的努力(决定移动视频,而不是删除它们)。似乎工作正常,但不是很优雅:
FOR /d /r %%d IN (*) DO (
ECHO "%%~nxd"|FIND " PG " >NUL
IF ERRORLEVEL 1 (ECHO Non-PG folder...move vids in "%%d"
Set NONPGFOLDER=%%d
ECHO !NONPGFOLDER!
DIR "!NONPGFOLDER!\*.avi"
MOVE "!NONPGFOLDER!\*.avi" "C:\AVIfiles\"
)ELSE (ECHO PG folder...do nothing in "%%d"
)
)
PAUSE
Exit
答案 0 :(得分:3)
Stack Overflow不是一个免费的代码编写服务,并且花费几分钟时间进行搜索,你很可能会发现这个简单的任务经常需要你自己编写的代码。
@echo off
setlocal EnableDelayedExpansion
for /F "delims=" %%F in ('dir /A-D /B /S "F:\*.avi" 2^>nul') do (
set "FilePath=%%~dpF"
if "!FilePath:PG=!" == "!FilePath!" echo del /F "%%F"
)
endlocal
pause
带有选项/A-D /B /S
的命令 DIR 会返回驱动器F:
上找到的AVI文件的文件名列表,其中包含完整路径,即使是完整文件名也没有双引号包含1个或多个空格。
将每个文件的路径分配给环境变量。
如果删除所有PG
不区分大小写的文件路径与未修改的文件路径相同,则文件路径中的文件夹不包含PG
,因此可以删除此文件。
在上面的代码中命令 del 之前有命令 echo ,以便在使用没有 echo的批处理文件之前验证删除列表强>没有暂停。
Joey建议的替代解决方案:
@echo off
setlocal EnableDelayedExpansion
for /R "F:\" %%F in (*.avi) do (
set "FilePath=%%~dpF"
if "!FilePath:PG=!" == "!FilePath!" echo del "%%F"
)
endlocal
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
del /?
dir /?
echo /?
endlocal /?
for /?
if /?
set /?
setlocal /?