1

我正在寻找一个微不足道的问题的解决方案,我无法解决。请帮帮我。我的计划是阅读 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 ...

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

4

1 回答 1

1

首先,在 for 循环之外初始化您的计数器变量。其次,您在每次迭代时都将 counter 设置为 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
于 2012-01-26T14:46:08.003 回答