用于从特定命名文件夹中删除AVI文件的批处理文件

时间:2015-12-14 12:16:19

标签: batch-file

我希望通过删除不需要的视频(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

1 个答案:

答案 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 /?