|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Сопоставить ссылки рядом, между ними установить символ. |
|
Любой язык - Сопоставить ссылки рядом, между ними установить символ.
|
Ветеран Сообщения: 546 |
Здравствуйте, решение нужно на BAT или на powershell.Есть два списка ссылок в txt файлах old.txt и new.txt (каждая ссылка с новой строки). Необходимо создать файл result.txt, в котором будут сопоставлены ссылки из этих двух текстовых файлов. Сопоставлять нужно по имени файла, игнорируя расширение, в конце каждой ссылки (если имя файла (игнорируя расширение) совпадает, то ссылка сопоставляется). Сопоставлять нужно через символ " | " ( до и после этого символа пробел ). result.txt должен получиться такого формата:
ссылка из old.txt | ссылка new.txt, совпадающая по имени файла (игнорируя расширение) c ссылкой old.txt Если ссылки из old.txt нету в new.txt, то ее должно не быть в результирующем файле. В old.txt может быть несколько ссылок с одним и тем же именем файла, каждой из них нужно сопоставить соответствующую ссылку из файла new.txt (если она есть). В new.txt, совпадающих ссылок по имени файла точно нет. Расширение в имени файла нужно игнорировать, т.е. сопоставление идет только по имени файла без расширения.. к примеру ссылка с именем файла "111re.avi" сопоставится с ссылкой с именем файла "111re.mp4" Пример: файл old.txt https://k2s.cc/file/uufyfidu/0498start.avi https://k2s.cc/file/wwwww/0382start.wmv https://k2s.cc/file/qqqqqqq/0606start.mp4 https://k2s.cc/file/sssssssss/0330tun.mp4 https://k2s.cc/file/yyyyyyy1/0330tun.flv https://k2s.cc/file/aaaaaaaa/classic0372.mp4 https://k2s.cc/file/22222222/omgty0997.mp4 https://k2s.cc/file/11111111/0332yyx.avi https://k2s.cc/file/7777e665/omgty0997.mp4 https://k2s.cc/file/11111111/77743yyx.mpg https://k2s.cc/file/11111111/5572eyyx.mp4 https://k2s.cc/file/dfgksdfdf/start765.mp4 https://k2s.cc/file/ksdjghfgjk/0382start.mp4 https://k2s.cc/file/sdfdsffdfdf/avvo1123.mp4 https://k2s.cc/file/sdfsdfsd/0330tun.mp4 https://k2s.cc/file/dfgsfgsf/classic0372.mp4 https://k2s.cc/file/fsdgsdfeefq/omgty0997.mp4 https://k2s.cc/file/sgfdhgew/0332yyx.mp4 https://k2s.cc/file/jgmgjyh/0498start.mp4 https://k2s.cc/file/1112222/0364start.mp4 https://k2s.cc/file/bcnndgd/0606start.mp4 https://k2s.cc/file/sdfgsfgsdgh/0783yye.mp4 https://k2s.cc/file/fjgjuhkku/classictr43.mp4 https://k2s.cc/file/werwerwes/54tyi.mp4 https://k2s.cc/file/dfgfdhdghgf/uwrt463.mp4 https://k2s.cc/file/uufyfidu/0498start.avi | https://k2s.cc/file/jgmgjyh/0498start.mp4 https://k2s.cc/file/wwwww/0382start.mp4 | https://k2s.cc/file/ksdjghfgjk/0382start.mp4 https://k2s.cc/file/qqqqqqq/0606start.mp4 | https://k2s.cc/file/bcnndgd/0606start.mp4 https://k2s.cc/file/sssssssss/0330tun.flv | https://k2s.cc/file/sdfsdfsd/0330tun.mp4 https://k2s.cc/file/yyyyyyy1/0330tun.flv | https://k2s.cc/file/sdfsdfsd/0330tun.mp4 https://k2s.cc/file/aaaaaaaa/classic0372.mp4 | https://k2s.cc/file/dfgsfgsf/classic0372.mp4 https://k2s.cc/file/22222222/omgty0997.mp4 | https://k2s.cc/file/fsdgsdfeefq/omgty0997.mp4 https://k2s.cc/file/11111111/0332yyx.avi | https://k2s.cc/file/sgfdhgew/0332yyx.mp4 https://k2s.cc/file/7777e665/omgty0997.mp4 | https://k2s.cc/file/fsdgsdfeefq/omgty0997.mp4 |
|
Отправлено: 00:43, 30-01-2019 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Alexander_88:
![]() Цитата Alexander_88:
https://k2s.cc/file/uufyfidu/0498start.avi https://k2s.cc/file/wwwww/0382start.wmv https://k2s.cc/file/qqqqqqq/0606start.mp4 https://k2s.cc/file/sssssssss/0330tun.mp4 https://k2s.cc/file/yyyyyyy1/0330tun.flv https://k2s.cc/file/aaaaaaaa/classic0372.mp4 https://k2s.cc/file/22222222/omgty0997.mp4 https://k2s.cc/file/11111111/0332yyx.avi https://k2s.cc/file/7777e665/omgty0997.mp4 https://k2s.cc/file/11111111/77743yyx.mpg https://k2s.cc/file/11111111/5572eyyx.mp4 https://k2s.cc/file/uufyfidu/0498start.avi | https://k2s.cc/file/jgmgjyh/0498start.mp4 https://k2s.cc/file/wwwww/0382start.mp4 | https://k2s.cc/file/ksdjghfgjk/0382start.mp4 https://k2s.cc/file/qqqqqqq/0606start.mp4 | https://k2s.cc/file/bcnndgd/0606start.mp4 https://k2s.cc/file/sssssssss/0330tun.flv | https://k2s.cc/file/sdfsdfsd/0330tun.mp4 https://k2s.cc/file/yyyyyyy1/0330tun.flv | https://k2s.cc/file/sdfsdfsd/0330tun.mp4 https://k2s.cc/file/aaaaaaaa/classic0372.mp4 | https://k2s.cc/file/dfgsfgsf/classic0372.mp4 https://k2s.cc/file/22222222/omgty0997.mp4 | https://k2s.cc/file/fsdgsdfeefq/omgty0997.mp4 https://k2s.cc/file/11111111/0332yyx.avi | https://k2s.cc/file/sgfdhgew/0332yyx.mp4 https://k2s.cc/file/7777e665/omgty0997.mp4 | https://k2s.cc/file/fsdgsdfeefq/omgty0997.mp4 А так — пробуйте: Скрытый текст
$sOldFile = 'C:\Мои проекты\0241\old.txt' $sNewFile = 'C:\Мои проекты\0241\new.txt' $sResultFile = 'C:\Мои проекты\0241\result.txt' Get-Content -Path $sNewFile | ForEach-Object -Begin { $hNewTable = @{} } -Process { $hNewTable.Add([IO.Path]::GetFileNameWithoutExtension($_), $_) } Get-Content -Path $sOldFile | ForEach-Object -Process { $sOldName = [IO.Path]::GetFileNameWithoutExtension($_) if($hNewTable.ContainsKey($sOldName)) { "$($_) | $($hNewTable[$sOldName])" } } | Set-Content -Path $sResultFile |
||
Отправлено: 04:56, 30-01-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 546
|
Профиль | Отправить PM | Цитировать Спасибо, работает. Да, скрипта не было, результирующий файл руками составлял и ошибся
![]() |
Отправлено: 09:48, 30-01-2019 | #3 |
Ветеран Сообщения: 546
|
Профиль | Отправить PM | Цитировать Этот вариант скрипта основной, еще нужно дополнительный, все точно также, только нужно, чтобы при сопоставлении, в имени файла игнорировался символ земли _
Такие символы встречаются только в old.txt. Пример: old.txt new.txt результирующий: Может быть нужно под второе задание новую тему создать? |
Отправлено: 10:34, 30-01-2019 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Alexander_88:
Скрытый текст
$sOldFile = 'C:\Мои проекты\0241\old.txt' $sNewFile = 'C:\Мои проекты\0241\new.txt' $sResultFile = 'C:\Мои проекты\0241\result.txt' Get-Content -Path $sNewFile | ForEach-Object -Begin { $hNewTable = @{} } -Process { $hNewTable.Add([IO.Path]::GetFileNameWithoutExtension($_), $_) } Get-Content -Path $sOldFile | ForEach-Object -Process { $sOldName = ([IO.Path]::GetFileNameWithoutExtension($_)).Replace('_', '') if($hNewTable.ContainsKey($sOldName)) { "$($_) | $($hNewTable[$sOldName])" } } | Set-Content -Path $sResultFile Цитата Alexander_88:
|
|||
Отправлено: 19:40, 30-01-2019 | #5 |
Ветеран Сообщения: 546
|
Профиль | Отправить PM | Цитировать Iska, спасибо, работает все и быстро обрабатывает много ссылок
![]() |
Отправлено: 20:26, 30-01-2019 | #6 |
Ветеран Сообщения: 546
|
Профиль | Отправить PM | Цитировать Здравствуйте, спустя 4 года потребовалось обновление скрипта
![]() Теперь файлов типа new txt много (old.txt так и остался один). А также при сопоставлении, игнорировать знак земли _ в имени файла нужно как в old.txt как и в new.txt. Во всех файлах типа new.txt не будет ссылок с повторяющимися именами файлов.. (не то, что в каждом, а прям во всех.. если склеить все эти файлы, не будет одинаковых имён в ссылках). Пример: old.txt https://k2s.cc/file/uufuhfdsidu/0498_start.mp4 https://k2s.cc/file/uuf5656du/0499start.avi https://google.com/file/uufyfidu/0498start_m.jpg new2.txt result.txt |
Отправлено: 18:14, 16-12-2023 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2013 - Как в ворде объединить несколько файлов и между ними вставить горизонтальные линии? | megagogo | Microsoft Office (Word, Excel, Outlook и т.д.) | 0 | 01-03-2015 14:29 | |
2008 R2 - Сервер 2008 и обмен между ними | ДмитрийFefilatyev | Windows Server 2008/2008 R2 | 7 | 08-04-2013 05:37 | |
2 локальные сетки и broadcast между ними | fenixekb | Microsoft Windows NT/2000/2003 | 11 | 28-07-2008 12:06 | |
Две сети, два Master browser-a и синхронизация NB-имён между ними! | sergey1234567 | Microsoft Windows NT/2000/2003 | 12 | 26-07-2007 14:03 | |
2 подсети и роутинг между ними | demonphp | Сетевые технологии | 2 | 21-05-2006 13:50 |
|