1

些細な問題の解決策を探していますが、解決できません。それを手伝ってください。私の計画は2つのファイルを読むことです。1 つはフォルダ構造で、もう 1 つはユーザー リストです。フォルダーの単語がユーザー リストに見つからない場合、(プロファイルなどの) フォルダーは削除されます。私はまだテスト中なので、私のコードに欠けている削除についてはまだ参照しないでください。ここに私がまだ持っているものがあります:


@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 ループの外でカウンター変数を初期化します。次に、繰り返しごとにカウンターを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 に答える