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

Alexander_88 05-04-2015 10:27 2491934

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

Код:

<a href="http://google.com/file/064cf3f45692b/00001start_DCN-047_yandex.ru.wmv" target="_blank">[$id] - 1.0 GB</a>
<a href="http://google.com/file/6959d25c2772b/00002start_CMV-049_yandex.ru.mp4" target="_blank">[$id] - 1.2 GB</a>
<a href="http://google.com/file/c5596a5a160d5/00003start_MUSO-0059_yandex.ru.avi" target="_blank">[$id] - 1.2 GB</a>
<a href="http://google.com/file/50b2abc43d59c/00004start_ADV-R0055_yandex.ru.avi" target="_blank">[$id] - 1.2 GB</a>
<a href="http://google.com/file/1facf228d65f5/00005start_SVND-053_yandex.ru.avi" target="_blank">[$id] - 671.5 MB</a>
<a href="http://google.com/file/2769106a91036/00006start_AKHO-111_yandex.ru.mp4" target="_blank">[$id] - 1.1 GB</a>
<a href="http://google.com/file/ba4fcd07cf7e5/00007start_CMV-072_yandex.ru.mkv" target="_blank">[$id] - 2.0 GB</a>
<a href="http://google.com/file/732f694c3fa22/00008start_JBD-183_yandex.ru.mp4" target="_blank">[$id] - 1.1 GB</a>
<a href="http://google.com/file/99922c79ebf1a/00009start_MIGD-641_yandex.ru.mp4" target="_blank">[$id] - 1.1 GB</a>
<a href="http://google.com/file/46cf75bb24ae2/00010start_XRW-046_yandex.ru.mp4" target="_blank">[$id] - 1.1 GB</a>
<a href="http://google.com/file/124b75595c17f/00011start_XRW-047_yandex.ru.mp4" target="_blank">[$id] - 1.1 GB</a>
<a href="http://google.com/file/84dfcd57ad37c/00012start_XRW-056_yandex.ru.mkv" target="_blank">[$id] - 1.6 GB</a>
<a href="http://google.com/file/bc9739f4e1b08/00013start_ADVO-066_yandex.ru.mkv" target="_blank">[$id] - 1.3 GB</a>
<a href="http://google.com/file/2eeb806e492b4/00014start_ADVO-067_yandex.ru.mkv" target="_blank">[$id] - 1.1 GB</a>

В первых трех ссылках я выделил жирным ссылки, которые должны быть извлечены.
Известно, что ссылка всегда начинается после первых кавычек, а заканчивается перед вторыми кавычками.

Примечание:
1 - Данный скрипт необходимо запускать из существующего бат файла.
2 - Данный файл скрипта будет скрытым файлом на компьютере (т.е его буду запускать не я сам, а другой бат файл(который я запущу))

Georgio 05-04-2015 10:47 2491944

Код:

@<"in.txt">"out.txt" (for /f tokens^=2^ delims^=^" %%i in ('more') do @echo.%%i)

Alexander_88 05-04-2015 11:04 2491952

Georgio, спасибо, проверил, все отлично :)

Гуллипут 05-04-2015 14:49 2492026

Georgio, я в шоке: в первый раз вижу, что ключи в команде for /f можно указать без кавычек, и это работает ! А ведь в хелпе написано. что надо заключать в кавычки ! Но, как я понял, чтобы указать ключи без кавычек, пришлось перед служебными символами строки ключей ставить ^. Я попробовал убрать - перестало работать.
Я только не понял: для чего тут more ?
Код:

>out.txt (for /f tokens^=2^ delims^=^" %%i in (in.txt) do @echo %%i)
Хотя для случая, когда имя входного файла содержит пробелы и должно заключаться в кавычки, это может быть оправдано. Или в этом случае надо будет добавлять usebackq:
Код:

>out.txt (for /f usebackq^ tokens^=2^ delims^=^" %%i in ("in.txt") do @echo %%i)

Georgio 05-04-2015 15:39 2492038

Цитата:

Цитата Гуллипут
Но, как я понял, чтобы указать ключи без кавычек, пришлось перед служебными символами строки ключей ставить ^. »


Гуллипут, правильно поняли.



Цитата:

Цитата Гуллипут
Я только не понял: для чего тут more ? »


Для того, чтобы и входной файл был за скобками, поскольку для этой команды существует такой синтаксический вариант использования:
Код:

more<"file"
(что тоже не отражено в справке).



Цитата:

Цитата Гуллипут
Хотя для случая, когда имя входного файла содержит пробелы и должно заключаться в кавычки, это может быть оправдано. Или в этом случае надо будет добавлять usebackq »


"usebackq" и заключение файла в кавычки в кодах желательно использовать всегда, поскольку в код можно будет подставлять любое имя файла, в том числе с пробелами и со специальными символами.


Время: 15:59.

Время: 15:59.
© OSzone.net 2001-