将外循环变量传递给嵌套循环

时间:2021-07-08 20:28:37

标签: batch-file

所以我的任务是遍历一个目录并设置一个变量来捕获 zip 文件名。 然后使用该变量来解析下划线之前字符串左侧的内容。这样我就可以命名一个日志文件。我搜索了高低,但我没有在 Stack 上看到任何好的例子。当我使用 %%i 时,它会返回一个完整的目录路径。 (此处不需要。)如果我使用 %%z,我将返回 null,如何将 %zipfile% 变量传递到嵌套循环 In() 中?

setlocal enableextensions enabledelayedexpansion

set dir1="C:\test\"

set 7zip="C:\Program Files\7-Zip\7z.exe"

set output="C:\test\Filelist.txt"


REM enter folder location

cd  C:\test


REM loop through zip files

    for /r %%i in (*.zip) do ( set zipfile=%%~nxi
                           
                                for /F " delims=_" %%z in (%zipfile%) do (set  log="%%z_file_list.txt")
                          
    )
    Pause
    
    REM Del %log%

1 个答案:

答案 0 :(得分:0)

以下内容对您有帮助吗?

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion

Set "dir1=C:\test"
Set "7zip="%ProgramFiles%\7-Zip\7z.exe"
Set "output=C:\test\Filelist.txt"

For /F "Delims=" %%G In (
    'Set "PATHEXT=" ^& %SystemRoot%\System32\where.exe /F /R "%dir1%" "?*_*.zip" 2^>NUL'
) Do (
    For /F "Delims=_" %%H In (
        "%%~nG"
    ) Do (
        Echo Set "log=%%H_file_list.txt"
    )
)
Pause
相关问题