批处理脚本为winrar排除了foldername

时间:2015-03-24 19:56:09

标签: batch-file winrar

我希望脚本跳过文件夹名称中包含_Fun_的主文件夹中的所有子文件夹,以避免该winrar存档。

我尝试了一些但没有任何效果,我的最后一次尝试看起来像:

for /D %%F in ("C:\Users\Admin\Desktop\Pictures\*") do (
"%ProgramFiles%\WinRAR\Rar.exe" m -ep1 -mt5 -m1 -v103M -r -x@"_Fun_" "C:\Users\Admin\Desktop\ArchivePictures\-Archive-Name-" "%%~F"
goto Done
)

1 个答案:

答案 0 :(得分:1)

使用此批处理代码测试当前文件夹的名称是否包含_Fun_并跳过该文件夹。

setlocal EnableDelayedExpansion
for /D %%F in ("C:\Users\Admin\Desktop\Pictures\*") do (
    set "FolderName=%%~nxF"
    if "!FolderName:_Fun_=!" == "%%~nxF" (
        "%ProgramFiles%\WinRAR\Rar.exe" m -ep1 -mt5 -m1 -v103M -r "C:\Users\Admin\Desktop\ArchivePictures\-Archive-Name-" "%%~F"
        goto Done
    )
)
:Done
endlocal

文件夹的名称和扩展名(如果文件夹中包含某个点)没有路径,则分配给环境变量FolderName

在下一行中,环境变量_Fun_FolderName的所有出现时间都延迟了,当cmd.exe解析整个 FOR 块时,所有内容都没有被替换。此字符串与未修改的文件夹名称进行比较。

如果文件夹名称在任何地方都不包含_Fun_,则字符串比较为正。在这种情况下,文件夹使用 WinRAR 进行压缩。

通过打开命令提示符窗口,输入set /?help set,使用键 RETURN 执行并阅读帮助页输出,阅读有关字符串操作和延迟环境变量扩展的更多信息在控制台窗口中。

此处针对%%~nxF使用的特殊字符序列在命令call以及命令for /?的帮助下进行了解释,可以通过执行call /?或{{ 1}}或for /?help call