Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Подгрузка содержимого файла в переменную с последующим ее поиском в другом файле (http://forum.oszone.net/showthread.php?t=227831)

slfly 14-02-2012 12:35 1858441

Подгрузка содержимого файла в переменную с последующим ее поиском в другом файле
 
Есть текстовый файл numbers.txt с числами вида:
Код:

45345345
34534634
54687656
49679679

и т.д.
Задача: С помощью батника подгружать каждое из чисел в файле numbers.txt в переменную, затем осуществлять поиск этой переменной в файле pasports.txt и в случае, если значение там будет найдено, выводить его в файл results.txt
Представляю, что это будет выглядеть как-то так:
Код:

@echo off
for /f %%a in (numbers.txt) do (
set line=%%a
find /I "%line%" pasports.txt
if errorlevel 1 goto :EOF
if errorlevel 0 echo %line% >> results.txt
)

Все файлы находятся, естественно, в текущей директории.
Проблема: не могу добится работоспособности. Значение в переменную line записывается, но вот в команде find эта переменная уже не раскрывается - происходит поиск пустого параметра, в итоге батник заканчивается после прогона первого же значения.

slfly 14-02-2012 13:50 1858508

Вообщем-то сам проблему и решил
Код:

for /f %%a in (numbers.txt) do call :log %%a

:log
set line=%1
find /I "%line%" pasports.txt
if errorlevel 1 goto :EOF
if errorlevel 0 echo %line% >> results.txt

Судя по всему в do дополнительное условие ставить не стоило.

Iska 14-02-2012 16:53 1858647

Цитата:

Цитата slfly
Судя по всему в do дополнительное условие ставить не стоило. »

slfly, Вам поможет отложенное раскрытие переменных:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

for /f %%a in (numbers.txt) do (
        set line=%%a
        find /i "!line!" pasports.txt
       
        if errorlevel 1 goto :EOF
        if errorlevel 0 echo !line! >> results.txt
)

endlocal
exit /b 0

Это если не трогать логику, а касаться некорректной работы с раскрытием переменных %…% внутри операторных скобок:
Цитата:

Цитата slfly
Значение в переменную line записывается, но вот в команде find эта переменная уже не раскрывается - происходит поиск пустого параметра, в итоге батник заканчивается после прогона первого же значения. »



Время: 20:00.

Время: 20:00.
© OSzone.net 2001-