2012-01-26 6 views
1

Я ищу решение для тривиальной проблемы, я не могу ее решить. Пожалуйста, помогите мне с этим. Мой план состоит в том, чтобы прочитать 2 файла. одна из них - это структура папок, другая - список пользователей. Если слово папки не найдено в списке пользователей, папка (например, Профиль) удаляется. Я все еще тестирую, поэтому, пожалуйста, не обращайтесь к отсутствующему удалению в моем коде. вот что я получил еще:Как установить переменную в For-Loop в batchscript


@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 ...

Любая помощь будет совершенным. Best, Andreas

ответ

1

Сначала инициализируйте переменную счетчика вне цикла for. Во-вторых, вы устанавливаете счетчик на 1 на каждой итерации ... не добавляя к ней. Для этого в dos batch вы должны использовать 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 
+0

Привет, Нет, это еще не помогло. 2 Что нужно здесь упомянуть: мне не нужен бит, чтобы получить больше 1, больше никогда не будет такого 1 матча. второй мне нужно установить счетчик 0 во внешнем цикле. Я попытался установить два раза дважды, инициализировать перед циклом и снова установить 0 во внешнем цикле. heres мой новый код: –

+0

Не могу вставить здесь, чтобы меньше символов осталось: http://pastebin.com/ityPzgC3 –