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

Vadikan 18-02-2009 13:53 1042196

Передача исполняемому файлу параметров, перечисленных в текстовом файле
 
Всем привет!

Имеется список ссылок в текстовом файле (каждая ссылка - URL), по одной на строку. Нужно обработать их все, передавая по одной за раз в качестве параметра командной строки исполняемому файлу. Это нужно для wget, который работает так:
Код:

wget URL {другие параметры}
У wget есть параметр -i input.txt, который должен обрабатывать список ссылок из файла, но почему-то он не срабатывает - пишет, что URLы не найдены... Хотя эти же URLы по одному в командной строке распознает. Поэтому ищу обxодной путь. В итоге нужен пакетный файл, который по одному обработает все ссылки из текстового файла.

Все ссылки имеют вид
Код:

http://oszone.net/print/ХХХХ
Спасибо.

Petya V4sechkin 18-02-2009 14:24 1042239

Vadikan, как-то так:
Код:

@Echo Off
SetLocal EnableExtensions
Set FN=input.txt
For /F "Delims=" %%I In (%FN%) Do wget %%I {другие параметры}

если батнику имя файла передается параметром, то так:
Код:

@Echo Off
SetLocal EnableExtensions
For /F "Delims=" %%I In (%1) Do wget %%I {другие параметры}


Vadikan 18-02-2009 14:37 1042256

Petya V4sechkin, спасибо!
:oszone:

Vadikan 19-04-2017 00:25 2730556

Подниму свою тему восьмилетней давности :) Потому что это фактически продолжение той же задачи.

Есть скрипт, который скачивает содержимое потоковых плейлистов локально
Код:

@Echo Off
SetLocal EnableExtensions
Set FN=playlists.txt
For /F "Delims=" %%I In (%FN%) Do youtube-dl --extract-audio --audio-format mp3 %%I

В файле playlists.txt в каждой строке ссылки вида:
Код:

https://somesite.com/<username>/sets/nn-n
где nn-n принимает значения 17-1, 10-1, 9-1 и т.п.

Сейчас все файлы падают в одну папку (со скриптом), а надо для каждого плейлиста - в свою, с именем nn-n. Поможете? :)

Iska 19-04-2017 01:15 2730577

Попробуйте так (не проверялось):
Скрытый текст
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFile=playlists.txt

if exist "%sSourceFile%" (
        for /f "usebackq delims=" %%i in ("%sSourceFile%") do (
                for /f "usebackq delims=" %%j in ('%%i') do (
                        if not exist "%%~nxj" md "%%~nxj"
                       
                        pushd "%%~nxj" && (
                                "youtube-dl.exe" --extract-audio --audio-format mp3 %%i
                                popd
                        )
                )
        )
) else (
        echo Can't find source file [%sSourceFile%].
        exit /b 1
)

endlocal
exit /b 0


Vadikan 19-04-2017 01:51 2730582

Iska, отлично, годится! Только
Код:

"..\youtube-dl.exe"
т.к. утилита уровнем выше лежит.

Iska 19-04-2017 02:30 2730584

Цитата:

Цитата Vadikan
Только
Код:

"..\youtube-dl.exe"
т.к. утилита уровнем выше лежит. »

Я думал, он у Вас где-нибудь в PATH, или же в оригинальном пакетном файле обращение будет идти по полному пути :(.
Если youtube-dl.exe расположен относительно самого пакетного файла, тогда лучше наподобие:
Код:

"%~dp0youtube-dl.exe" …


Время: 08:51.

Время: 08:51.
© OSzone.net 2001-