Batch file 批处理文件以从特定命名文件夹中删除AVI文件
我希望通过删除不需要的视频(AVI)文件来整理完整的存档驱动器 我需要做的是从主目录的文件夹和子文件夹中删除AVI文件。但是,我不想从文件夹名称中包含文本“PG”的任何文件夹中删除AVI文件-通常为“G1244A PG报告”的形式,但识别代码(在本例中为“G1244A”)的长度可能不同。 谢谢 在@tftd注释后添加: 以下是我迄今为止所做的努力(决定移动视频,而不是删除它们)。看起来不错,但不是很优雅:Batch file 批处理文件以从特定命名文件夹中删除AVI文件,batch-file,Batch File,我希望通过删除不需要的视频(AVI)文件来整理完整的存档驱动器 我需要做的是从主目录的文件夹和子文件夹中删除AVI文件。但是,我不想从文件夹名称中包含文本“PG”的任何文件夹中删除AVI文件-通常为“G1244A PG报告”的形式,但识别代码(在本例中为“G1244A”)的长度可能不同。 谢谢 在@tftd注释后添加: 以下是我迄今为止所做的努力(决定移动视频,而不是删除它们)。看起来不错,但不是很优雅: FOR /d /r %%d IN (*) DO ( ECHO "%%~nxd"|FIND
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
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和暂停的情况下使用批处理文件之前验证删除列表
以下建议的替代解决方案:
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面
del/?
dir/?
echo/?
endlocal/?
获取/?
如果/?
设置/?
setlocal/?
for/r,而不是在dir
输出上使用for/f
。在正确处理空格的同时,根据控制台窗口的字体设置,对于包含Unicode的文件名,此操作仍将失败。
@echo off
setlocal EnableDelayedExpansion
for /R "F:\" %%F in (*.avi) do (
set "FilePath=%%~dpF"
if "!FilePath:PG=!" == "!FilePath!" echo del "%%F"
)
endlocal