Войти

Показать полную графическую версию : [решено] Обработка получаемых переменных из текстового файла


alexxx2011
14-12-2017, 10:54
Задача такая: Извлечь из текстового файла названия архивов, которые там записаны в столбик, а потом последовательно их распаковать.
Архивов намного больше, но извлекать надо именно те, названия которых есть в файле.

Есть примерно такой вот скрипт:


<allfiles.txt (for /f "tokens=1* delims=[]" %%a in ('find /n /v ""') do set "s%%a=%%b")
call :un %s1%
call :un %s2%
call :un %s3%
call :un %s4%
call :un %s5%
call :un %s6%
call :un %s7%
call :un %s8%
call :un %s9%

pause
exit

:un
"7z.exe" x -aoa -tzip %~dp0resources\%1.zip -o%~dp0resources\%1
exit /b

Количество строк извлекаемых в переменные из файла allfiles.txt может быть разное. Когда 5, а когда и 150. Если изначально скрипт сделать с наибольшим количеством %sXX%, то выглядит такая портянка из 150 строчек некрасиво и в логе появляются записи об ошибках.
Чтобы избежать таких ошибок можно конечно перед вызовом call сделать проверку на то, пустая переменная или нет и в зависимости от этого продолжать работу или завершить, но от портянки вызовов это не избавляет.
Может есть у кого более изящное решение?

Iska
14-12-2017, 11:47
Извлечь из текстового файла названия архивов, которые там записаны в столбик »
И где образец этого файла, упакованного в архив?

Есть примерно такой вот скрипт: »
Что это? Откуда это? Зачем это?! Вот всё:
for /f "usebackq delims=" %%i in ("List.txt") do "7z.exe" … "%%~i"
что примерно нужно, если, как Вы пишете, «названия … записаны в столбик».

alexxx2011
14-12-2017, 15:54
что примерно нужно, если, как Вы пишете, «названия … записаны в столбик». »

А что, изящное решение. Очень даже подошло. Большое спасибо!




© OSzone.net 2001-2012