 |
|
Alexander_88 |
24-11-2015 23:25 2578644 |
Замена ссылок, в которых сходится имя файла
Здравствуйте, подскажите, пожалуйста, как можно сделать замену ссылок в txt файле? Заменять нужно по именам файлов (после последней косой черты). новые ссылки находятся в отдельном txt файле.
Файл в котором нужно сделать замену imagelink.txt
Код:
http://s7.depic.me/034341/r4dfsdfjfat9_o/0005swl_t.jpg
http://s7.depic.me/01421/o7thshjlpdom_o/0006swl_m.jpg
http://s7.depic.me/01421/ooljfhd5ub1_o/0006swl_t.jpg
http://s6.depic.me/01341/73ahjhj0cw18_o/0007swl_m.jpg
http://s5.depic.me/01341/c5ayuyu9ici_o/0007swl_t.jpg
http://s7.depic.me/01445/lw1jkhgzenx_o/0008swl_m.jpg
http://s7.depic.me/01445/jav5cbvxn78b_o/0008swl_t.jpg
http://s6.depic.me/01341/qq57sfdfgbbm_o/0009swl_m.jpg
Файл, в котором находятся новые ссылки: new.txt
Код:
http://s6.depic.me/01341/73aaaaaaa0cw18_o/0007swl_m.jpg
http://s7.depic.me/01421/ooljfbbbbbbbhd5ub1_o/0006swl_t.jpg
Результат после выполнения, imagelink.txt стал таким:
Код:
http://s7.depic.me/034341/r4dfsdfjfat9_o/0005swl_t.jpg
http://s7.depic.me/01421/o7thshjlpdom_o/0006swl_m.jpg
http://s7.depic.me/01421/ooljfbbbbbbbhd5ub1_o/0006swl_t.jpg
http://s6.depic.me/01341/73aaaaaaa0cw18_o/0007swl_m.jpg
http://s5.depic.me/01341/c5ayuyu9ici_o/0007swl_t.jpg
http://s7.depic.me/01445/lw1jkhgzenx_o/0008swl_m.jpg
http://s7.depic.me/01445/jav5cbvxn78b_o/0008swl_t.jpg
http://s6.depic.me/01341/qq57sfdfgbbm_o/0009swl_m.jpg
|
PowerShell:
Код:
$imagelink = get-content imagelink.txt
get-content new.txt | foreach {
$imagelink = $imagelink -replace ".+/$(([uri] $_).segments[-1])", $_
}
set-content imagelink.txt $imagelink
|
Alexander_88 |
25-11-2015 14:12 2578756 |
Спасибо, все отлично работает. Единственная мелочь.., если в файле new.txt есть хоть одна пустая строка (не считая последней), то все ссылки в файле imagelink.tct режутся.. от них остается только имя файла и расширение. :)
|
Alexander_88, если пустая строка не нужна, то можно ее вообще игнорировать:
Код:
$imagelink = (get-content imagelink.txt) -match '.'
|
Alexander_88 |
25-11-2015 15:07 2578780 |
добавил сюда строку
Код:
$imagelink = get-content imagelink.txt
$imagelink = (get-content imagelink.txt) -match '.'
get-content new.txt | foreach {
$imagelink = $imagelink -replace ".+/$(([uri] $_).segments[-1])", $_
}
set-content imagelink.txt $imagelink
Поставил на паузу, появляется такое сообщение
Код:
Не удается индексировать в массив NULL.
C:\OneDrive\work\new\restore image\zamena.ps1:6 знак:41
+ ... $imagelink = $imagelink -replace ".+/$(([uri] $_).segments[-1])", $_
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
Не удается индексировать в массив NULL.
C:\OneDrive\work\new\restore image\zamena.ps1:6 знак:41
+ ... $imagelink = $imagelink -replace ".+/$(([uri] $_).segments[-1])", $_
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
Не удается индексировать в массив NULL.
C:\OneDrive\work\new\restore image\zamena.ps1:6 знак:41
+ ... $imagelink = $imagelink -replace ".+/$(([uri] $_).segments[-1])", $_
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
Не удается индексировать в массив NULL.
C:\OneDrive\work\new\restore image\zamena.ps1:6 знак:41
+ ... $imagelink = $imagelink -replace ".+/$(([uri] $_).segments[-1])", $_
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
Для продолжения нажмите клавишу ВВОД...:
Может надо применить эту строчку на new.txt?
т.е. получается если есть хоть один пробел в new.txt, то замена проходит не правильно (все ссылки урезаются)
|
Надо было заменить первую. Но даже в таком варианте у меня все отрабатывает
Если первый вариант отрабатывал, значит версия повершел соответствует. Попробуйте на всякий случай так:
Код:
$imagelink = (get-content imagelink.txt) -match '.'
get-content new.txt | foreach {
$imagelink = $imagelink -replace ".+/$([regex]::escape(([uri] $_).segments[$_.segments.count - 1]))", $_
}
set-content imagelink.txt $imagelink
|
Alexander_88 |
25-11-2015 17:25 2578825 |
Цитата:
Цитата Foreigner
Но даже в таком варианте у меня все отрабатывает »
|
странно, а вы пробовали пустых строк добавить в new.txt? например просто в самую последнюю строку курсор установить и раз 6 энтер нажать?
так то у меня все работает, не работает только, когда в new.txt есть пустышки
|
Alexander_88, Нет, тогда измените:
Код:
...
(get-content new.txt) -match '.' | foreach {
...
|
Alexander_88 |
25-11-2015 17:40 2578829 |
Спасибо, теперь пустые строки не проблема :yahoo:
|
Время: 03:05.
© OSzone.net 2001-