【问题标题】:Batch script exclude foldername for winrar批处理脚本排除 winrar 的文件夹名称
【发布时间】:2015-03-24 19:56:08
【问题描述】:

我希望脚本跳过文件夹名称中包含 _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
)

【问题讨论】:

    标签: batch-file winrar


    【解决方案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

    在下一行中,所有出现在环境变量 FolderName 中的 _Fun_ 都被延迟扩展,并且在 cmd.exe 解析整个 FOR 块时还没有出现,并且该字符串与未修改的字符串进行比较文件夹名称。

    如果文件夹名称在任何地方都不包含_Fun_,则字符串比较是肯定的。在这种情况下,文件夹是用 WinRAR 压缩的。

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

    此处用于%%~nxF 的特殊字符序列在命令call 以及命令for /? 的帮助下进行了解释,该命令可以通过执行call /?for /?help call 或@987654336 来读取@。

    【讨论】:

    • 感谢您的帮助和解释!
    猜你喜欢
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 2018-12-23
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多