【问题标题】:For loop setting two matching variablesFor循环设置两个匹配的变量
【发布时间】:2017-09-26 20:46:05
【问题描述】:

我需要批量压缩所有用户个人资料中的特定文件夹。

这是我现在所拥有的,但是,我想不出一种方法来设置 %user% 变量以匹配每个循环。

set ZIPFILE=C:\BKP\%user%.zip
for /d %%a in (
  "C:\Users\*"
) do (set "logFolder=%%~fa\AppData\Local\Intuit\QuickBooks\Log\27.0\" & call :woot)

:woot
"c:\Program Files\7-Zip\7z.exe" a %ZIPFILE% "%logFolder%"

我能够获得使用此行的所有用户的“列表”

dir /b /ad "C:\Users"

现在我需要找到一种方法让循环在每个循环中更改变量%user%,例如,输出应该是:

7z.exe a C:\BKP\User1.zip C:\Users\User1\AppData\Local\Intuit\QuickBooks\Log\27.0\

7z.exe a C:\BKP\User2.zip C:\Users\User2\AppData\Local\Intuit\QuickBooks\Log\27.0\

非常感谢!

【问题讨论】:

    标签: windows batch-file for-loop command-line


    【解决方案1】:

    如果你先切换到用户文件夹,你可以在文件夹上循环并使用循环变量。

    c:
    cd \Users
    for /d %%a in ("*") do (
        set ZIPFILE=C:\BKP\%%a.zip &
        set "logFolder=c:\Users\%%a\AppData\Local\Intuit\QuickBooks\Log\27.0\" &
        call :woot)
    
    :woot
    "c:\Program Files\7-Zip\7z.exe" a %ZIPFILE% "%logFolder%"
    

    【讨论】:

    • 正是我需要的!有时解决方案是如此简单,以至于让我们感到愚蠢:P 非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多