Формирование списка.
Добрые сутки.
Есть текстовый файл, экспортированный секьюрити лог, в нём события, даты, учётные записи за два месяца. Задача получить новый список с перечнем учётных записей, существующих в родительском списке, без дублирования. o:\sec.txt - исходный файл o:\fin.txt - созданный ручками пустой файл для конечного списка. Незатейливо пишу в командлайне: Код:
For /F "tokens=8" %a in (o:\sec.txt) do For /F "skip=2 tokens=1" %k in ('find "%a" o:\fin.txt') do IF NOT "%a" == "%k" echo %a >> o:\fin.txt |
Цитата:
Код:
... IF NOT "#%a" == "#%k" ... |
до IF дело не доходит, дело во втором For. Если нет совпадений - ничего не проверяется, так как не выполняется условие второго цикла. А я хочу этот момент обойти, но не знаю - как. Чувствую - что через %errorlevel% вместо второго цикла. А вот с подробностями - запара, так как изменения %errorlevel% в конструкции вида
Код:
For /F "tokens=8" %a in (o:\sec.txt) do (find "%a" o:\fin.txt & if "%errorlevel%" == "1" echo %a >> o:\fin.txt) |
somes, можно так:
Код:
@Echo Off |
Цитата:
Код:
For /F "Tokens=8 Delims= " %a In (o:\sec.txt) Do If Not DEFINED $%a Set $%a=X&(@Echo %a>>o:\fin.txt) |
amel27, да, это гораздо быстрее, чем Find/FindStr.
|
Petya V4sechkin, удивительно, что IF DEFINED работает с переменными периода выполнения
|
Большое спасибо, уважаемые, тему можно закрывать.
|
Время: 09:27. |
Время: 09:27.
© OSzone.net 2001-