Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Сопоставить ссылки рядом, между ними установить символ.

Ответить
Настройки темы
Любой язык - [решено] Сопоставить ссылки рядом, между ними установить символ.

Старожил


Сообщения: 432
Благодарности: 2

Профиль | Отправить PM | Цитировать


Здравствуйте, решение нужно на 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
файл new.txt
Код: Выделить весь код
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

 

Ветеран


Contributor


Сообщения: 24033
Благодарности: 6979

Профиль | Отправить PM | Цитировать


Цитата Alexander_88:
В new.txt, совпадающих ссылок по имени файла точно нет. »
Поверим Вам на слово и никак не будем сие проверять .

Цитата 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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 432
Благодарности: 2

Профиль | Отправить PM | Цитировать


Спасибо, работает. Да, скрипта не было, результирующий файл руками составлял и ошибся

Отправлено: 09:48, 30-01-2019 | #3


Старожил


Сообщения: 432
Благодарности: 2

Профиль | Отправить PM | Цитировать


Этот вариант скрипта основной, еще нужно дополнительный, все точно также, только нужно, чтобы при сопоставлении, в имени файла игнорировался символ земли _
Такие символы встречаются только в old.txt.
Пример:
old.txt
Код: Выделить весь код
https://k2s.cc/file/uufyfidu/0498_start.avi
new.txt
Код: Выделить весь код
https://k2s.cc/file/3434w/0498start.mp4
результирующий:
Код: Выделить весь код
https://k2s.cc/file/uufyfidu/0498_start.avi | https://k2s.cc/file/3434w/0498start.mp4
Может быть нужно под второе задание новую тему создать?

Отправлено: 10:34, 30-01-2019 | #4


Ветеран


Contributor


Сообщения: 24033
Благодарности: 6979

Профиль | Отправить PM | Цитировать


Цитата Alexander_88:
нужно, чтобы при сопоставлении, в имени файла игнорировался символ земли _
Такие символы встречаются только в old.txt. »
Пробуйте:
Скрытый текст
Код: Выделить весь код
$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


Старожил


Сообщения: 432
Благодарности: 2

Профиль | Отправить PM | Цитировать


Iska, спасибо, работает все и быстро обрабатывает много ссылок

Отправлено: 20:26, 30-01-2019 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Сопоставить ссылки рядом, между ними установить символ.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход