windows批处理,在嵌套循环内设置变量

标签 windows loops batch-file command nested

我有下面的批处理从文本文件读取数据,问题出在内部循环中;它应该在目标文件夹中获取 lat 创建的文件,但它什么也没得到!

这是我的代码:

:: Delete Files from folder
@echo off
:: Delete Files from folder
echo y | del "E:\HIS_Data_Consolidation\HIS_Backups\*.bak" 
echo Deleting previous bak files...
set destdir=E:\HIS_Data_Consolidation\HIS_Backups
setlocal
FOR /F "tokens=1,2,3 delims=," %%G IN (clinics.txt) DO (
pushd "%%G"
for /F  "tokens=*" %%a in ('dir *.* /b /a-d /o:e 2^>NUL') do (
set lfile=%%a
)
echo copying "%%G\%lfile%" to "%destdir%" ,,,%%H
copy /y "%%G\%lfile%" "%destdir%
E:
cd "%destdir%
E:\HIS_Data_Consolidation\HIS_Backups\unrar.exe e "%destdir%/%lfile%"
echo y | del "E:\HIS_Data_Consolidation\HIS_Backups\*.rar" 
echo Deleting RAR file...
SET v_test=%lfile%
SET v_result=%v_test:rar=bak%
ren "%v_result%"  "%%I"
echo Ready ...
popd
)
pause

感谢您的帮助。 谢谢。

最佳答案

如果您在 for 主体中使用集合,则需要 enabledelayedexpansion: http://www.robvanderwoude.com/variableexpansion.php

编辑:

:: Delete Files from folder
@echo off
:: Delete Files from folder
echo y | del "E:\HIS_Data_Consolidation\HIS_Backups\*.bak" 
echo Deleting previous bak files...
set destdir=E:\HIS_Data_Consolidation\HIS_Backups

setlocal enabledelayedexpansion
FOR /F "tokens=1,2,3 delims=," %%G IN (clinics.txt) DO (
    pushd "%%G" 
    for /F  "tokens=*" %%a in ('dir *.* /b /a-d /o:e 2^>NUL') do (
        set lfile=%%a
    )
    echo copying "%%G\!lfile!" to "!destdir!" ,,,%%H
    copy /y "%%G\!lfile!" "!destdir!"
    E:
    cd "!destdir!"
    E:\HIS_Data_Consolidation\HIS_Backups\unrar.exe e "!destdir!/!lfile!"
    echo y | del "E:\HIS_Data_Consolidation\HIS_Backups\*.rar" 
    echo Deleting RAR file...
    SET v_test=!lfile!
    SET v_result=!v_test:rar=bak!
    ren "!v_result!"  "%%I"
    echo Ready ...
    popd
)
endlocal
pause

关于windows批处理,在嵌套循环内设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668922/

相关文章:

java - 如何迭代 arraylist ,在每个对象中执行操作并将其存储回 arraylist 中?

vba - Excel VBA - 让 VBA 脚本循环遍历行

Windows Management Instrumentation 命令行 (WMIC) 支持不同的 Windows 版本

windows - 通过 ftp 下载文件的批处理脚本,我该如何处理覆盖

windows - 如何在 Windows 中使用命令行向用户授予目录权限?

windows - 如何在 Windows 7/2008 中自动执行 perl 脚本?

python - re.compile().match 在 win10 和 ubuntu 上与 python3 的不同结果

c++ - 集成 Windows 身份验证 Wininet

java - "Why does my lottery game ignores zeros?"

MySQL 在 --batch 模式下处理空值