如何在批处理脚本中设置For-Loop中的变量

时间:2012-01-26 13:09:27

标签: for-loop setlocale batch-file

我正在为一个微不足道的问题寻找解决方案,我无法解决。请帮帮我。 我的计划是阅读2个文件。其中一个是文件夹结构,另一个是用户列表。 如果在用户列表中找不到文件夹字,则(例如,配置文件)文件夹将被删除。 我还在测试所以请不要在我的代码中引用丢失的删除。 这就是我所拥有的:


@echo off
chcp 1252 >nul

setlocal ENABLEDELAYEDEXPANSION
cls

echo --- working ---

for /f "delims=," %%x in (Profile.txt) do (
    set counter = 0
    for /f "tokens=1,2 delims=," %%a in (ADMPReport.csv) do (
        IF "%%x"=="%%b" (
            echo %%x & echo %%b
            REM IF User is found counter gets 1
            set counter = 1
            echo %counter%
            pause
        ) 
    )
    echo %counter%
    REM if no user found Counter = 0
    if %counter% == "0" echo %%x 
        REM ping -n 3 127.0.0.1 >NUL
)

echo ---- done ----
ENDLOCAL

ping -n 3 127.0.0.1 >NUL

我的问题是,计数器保持在1 ......

任何帮助都是完美的。 最好, 安德烈亚斯

1 个答案:

答案 0 :(得分:1)

首先,在for循环外初始化你的计数器变量。 其次,你在每次迭代时都将计数器设置为1 ...而不是添加它。要在dos批处理中执行此操作,必须使用set / a。它应该是这样的:

@echo off
chcp 1252 >nul

setlocal ENABLEDELAYEDEXPANSION
cls

echo --- working ---

set counter=0
for /f "delims=," %%x in (Profile.txt) do (
    for /f "tokens=1,2 delims=," %%a in (ADMPReport.csv) do (
        IF "%%x"=="%%b" (
            echo %%x & echo %%b
            REM IF User is found counter gets 1
            set /a counter=%counter%+1
            echo %counter%
            pause
        ) 
    )
    echo %counter%
    REM if no user found Counter = 0
    if %counter% == "0" echo %%x 
        REM ping -n 3 127.0.0.1 >NUL
)

echo ---- done ----
ENDLOCAL

ping -n 3 127.0.0.1 >NUL