Компьютерный форум 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=331881)

alexxx2011 14-12-2017 10:54 2784297

Обработка получаемых переменных из текстового файла
 
Задача такая: Извлечь из текстового файла названия архивов, которые там записаны в столбик, а потом последовательно их распаковать.
Архивов намного больше, но извлекать надо именно те, названия которых есть в файле.

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

Код:

<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 2784301

Цитата:

Цитата alexxx2011
Извлечь из текстового файла названия архивов, которые там записаны в столбик »

И где образец этого файла, упакованного в архив?

Цитата:

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

Что это? Откуда это? Зачем это?! Вот всё:
Код:

for /f "usebackq delims=" %%i in ("List.txt") do "7z.exe" … "%%~i"
что примерно нужно, если, как Вы пишете, «названия … записаны в столбик».

alexxx2011 14-12-2017 15:54 2784318

Цитата:

Цитата Iska
что примерно нужно, если, как Вы пишете, «названия … записаны в столбик». »

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


Время: 06:19.

Время: 06:19.
© OSzone.net 2001-