Это на самом деле не так сложно. myfile
становится именем файла, в котором вы храните список URL-адресов, а blabla
- просто дополнительные параметры, передаваемые в Firefox.
Хотя есть несколько моментов, которые можно улучшить:
Полагаться на Firefox - не самая лучшая вещь. Я бы предложил использовать
start "" "%%a"
вместо этого, поскольку он порождает браузер по умолчанию, вместо того, чтобы жестко задавать конкретный браузер.
Ваш пакет не будет выполнен, когда будет достигнуто количество веб-сайтов в вашем файле, и, возможно, просто появится новое окно Firefox. Ниже я создал пакет, который устраняет обе проблемы:
@echo off
setlocal enableextensions
rem fetch the first URL
set /p URL=<list.txt
rem Open the browser with that URL
start "" "%URL%"
rem Remove the URL from the front of the file ...
more +1 list.txt | findstr /r /v "^$" > tmp_list.txt
rem ... and put it to the end
echo.%URL%>>tmp_list.txt
del list.txt
ren tmp_list.txt list.txt
endlocal
Эта версия не зависит от конкретного браузера. Он просто свернет сам файл, удалив первый URL и снова прикрепив его к концу. Так что, пока у вас есть URL-файл (в нашем случае list.txt
), он в значительной степени автономен. Код можно найти и в моем SVN-репозитории .
ETA: Объяснение некоторых частей этой партии:
set /p URL=<list.txt
Это будет первая строка в list.txt
, которая будет сохранена в переменной окружения URL
. Обычно set /p
запрашивает ввод данных пользователем. Перенаправляя файл в эту команду, мы в основном делаем вид, что содержимое файла было введено пользователем.
start "" "%URL%"
откроет веб-страницу, документ, папку, что угодно. start
делает The Right Thing ™ автоматически (в основном :)). Если мы дадим ему URL, он откроет браузер по умолчанию с ним, что мы и используем здесь. Две кавычки вокруг URL гарантируют, что символы, такие как &
в URL, будут правильно передаваться в браузер, в противном случае они имеют особое значение. К сожалению, две кавычки, следующие сразу за start
, необходимы при использовании кавычек с start
. В противном случае start
будет интерпретировать URL как заголовок окна для нового окна консоли, что может быть не совсем тем, что мы здесь хотим.
more +1 list.txt | findstr /r /v "^$" > tmp_list.txt
У этого есть несколько частей. Прежде всего more +1
вызывает вывод файла, пропуская первую строку. Как мы помним, первая строка - это первый URL, который мы хотели открыть (что уже должно было произойти). Мы хотим удалить этот URL-адрес из начала файла и поместить его в конец. Итак, первый шаг - удалить его с самого начала, что и делает more +1 list.txt
здесь.
Тогда все, что напечатано more
, передается в findstr
. findstr
- это удобная утилита для поиска строк. Здесь мы включаем регулярные выражения с /r
(своего рода инструмент мечты программистов для обработки текста - если бы они могли, они писали бы полные программы в регулярных выражениях, но я отвлекся). Тогда /v
заставляет findstr
печатать каждую строку , а не , соответствующую тому, что мы указали после этого. Шаблон, который мы ищем здесь, это "^$"
, который просто-напросто говорит "пустая строка".
Таким образом, в одной строке мы удаляем первую строку из файла и удаляем из него все пустые строки. (Эти пустые строки приводят к тому, что командный файл делает странные вещи. Помните, что start
делает в основном правильной вещью? Это один из таких случаев. Пустая строка в вашем файле может вызвать окно проводника с вашим вместо браузера с следующей веб-страницей должна появиться текущая папка. Поэтому нам нужно избавиться от них.)
Наконец, мы записываем все эти команды в новый файл, который называется tmp_list.txt
. Не волнуйтесь, это не задержится слишком долго.
echo.%URL%>>tmp_list.txt
Добавляет только что открытый URL в наш временный список. Ничего необычного здесь не происходит.
del list.txt
ren tmp_list.txt list.txt
Наконец мы удаляем старый список и снова переименовываем временный в старое имя.
ETA: Поскольку вы запросили версию, которая может открывать несколько страниц за один раз, ниже следует быстрый и грязный хак, который включает только это:
@echo off
setlocal enableextensions
set num=3
for /l %%i in (1,1,%num%) do call :start
endlocal
goto :eof
:start
set /p URL=<list.txt
start "" "%URL%"
more +1 list.txt | findstr /r /v "^$" > tmp_list.txt
echo.%URL%>>tmp_list.txt
del list.txt
ren tmp_list.txt list.txt
goto :eof
На этот раз длинных объяснений нет. Этот пост уже достаточно длинный. Вы можете контролировать количество открываемых страниц, изменяя переменную num
в верхней части файла.
set num=5
приведет к открытию пяти страниц вместо трех.