Войти

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


Vadikan
18-02-2009, 13:53
Всем привет!

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

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

Все ссылки имеют вид
http://oszone.net/print/ХХХХ

Спасибо.

Petya V4sechkin
18-02-2009, 14:24
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
Petya V4sechkin, спасибо!
:oszone:

Vadikan
19-04-2017, 00:25
Подниму свою тему восьмилетней давности :) Потому что это фактически продолжение той же задачи.

Есть скрипт, который скачивает содержимое потоковых плейлистов локально
@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
Попробуйте так (не проверялось):
@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
Iska, отлично, годится! Только "..\youtube-dl.exe"т.к. утилита уровнем выше лежит.

Iska
19-04-2017, 02:30
Только
"..\youtube-dl.exe"
т.к. утилита уровнем выше лежит. »
Я думал, он у Вас где-нибудь в PATH, или же в оригинальном пакетном файле обращение будет идти по полному пути :(. Если youtube-dl.exe расположен относительно самого пакетного файла, тогда лучше наподобие:
"%~dp0youtube-dl.exe" …




© OSzone.net 2001-2012