|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Заменить ссылки в txt файле, найдя одинаковые номера |
|
|
Любой язык - [решено] Заменить ссылки в txt файле, найдя одинаковые номера
|
Ветеран Сообщения: 546 |
Здравствуйте, подскажите как сделать такое на powershell или bath ?
есть несколько txt файлов.. в каждом txt ссылки одного из нескольких типов.. пример одного из типов: https://google.com/file/6c616b50641a8/0001start.mp4 https://google.com/file/f0bafe33ee86d/0002start.mp4 https://google.com/file/82c4d96027879/0003start.mp4 https://google.com/file/2ca5c2ed414b6/0004start.mp4 https://google.com/file/8e616f8c54ce8/0005start.mp4 https://google.com/file/484651ad8773a/0006start.mp4 https://google.com/file/a0abb050c39f5/0007start.mp4 https://google.com/file/e93fb78dbcfcf/0008start.mp4 https://google.com/file/613bf9cc27632/0009start.mp4 https://google.com/file/e95ba702a2557/0010start.mp4 https://google.com/file/c7f25a80f361d/0011start.mp4 https://google.com/file/deletelink/0012start.mp4 https://google.com/file/bd95035d50f7a/0013start.mp4 https://google.com/file/deletelink/0014start.mp4 https://google.com/file/c5b0e8bc53652/0015start.mp4 https://google.com/file/deletelink/0016start.mp4 https://google.com/file/2ca4038062eb9/0017start.mp4 https://google.com/file/deletelink/0018start.mp4 https://google.com/file/976582ec7e383/0019start.mp4 https://google.com/file/20ab0d8a2856c/0020start.mp4 https://google.com/file/deletelink/0021start.mp4 https://google.com/file/df3b1c7694b27/0022start.mp4 https://google.com/file/deletelink/0023start.mp4 https://google.com/file/deletelink/0024start.mp4 https://google.com/file/9ce184ff0b163/0025start.mp4 https://google.com/file/es5gscfcf/0008start.mp4 https://google.com/file/c5bfgju3652/0015start.mp4 https://google.com/file/dwtgink/0021start.mp4 Но как я говорил в одном txt файлы только какого - нибудь одного типа, необходимо либо несколько скриптов под разные типы файлов, либо один универсальный (если это возможно). Теперь к тому, что должен делать скрипт ![]() в каждом txt файле список ссылок, в конце которых есть имя файла... в составе имени файла обязательно есть номер, состоящий из 4ех цифр... номер этих цифр идет по порядку, начиная с 0001 (0001 - первая ссылка, 0002 - вторая ссылка, 0003 третья ссылка и т.д.). В какой то момент порядок нарушается, и идут ссылки, которые должны заменить тех, что выше (находить тех, которых заменить нужно по номеру), ссылка должна замениться полностью. Другими словами нужно выполнить замену ссылок со старых на новые.. старые выше, новые ниже, определять по 4ех значному номеру в имени файла. За место старых ссылок должны встать новые, а новые со своих мест (снизу) удалиться. Дубликатов в новых ссылках не будет, номера у них будут разные.. такие же номера 100% будут в старых ссылках. txt файлы должны заменится на новые после применения скрипта. Из примера выше, после применения скрипта, txt файл должен стать таким.. https://google.com/file/6c616b50641a8/0001start.mp4 https://google.com/file/f0bafe33ee86d/0002start.mp4 https://google.com/file/82c4d96027879/0003start.mp4 https://google.com/file/2ca5c2ed414b6/0004start.mp4 https://google.com/file/8e616f8c54ce8/0005start.mp4 https://google.com/file/484651ad8773a/0006start.mp4 https://google.com/file/a0abb050c39f5/0007start.mp4 https://google.com/file/es5gscfcf/0008start.mp4 https://google.com/file/613bf9cc27632/0009start.mp4 https://google.com/file/e95ba702a2557/0010start.mp4 https://google.com/file/c7f25a80f361d/0011start.mp4 https://google.com/file/deletelink/0012start.mp4 https://google.com/file/bd95035d50f7a/0013start.mp4 https://google.com/file/deletelink/0014start.mp4 https://google.com/file/c5bfgju3652/0015start.mp4 https://google.com/file/deletelink/0016start.mp4 https://google.com/file/2ca4038062eb9/0017start.mp4 https://google.com/file/deletelink/0018start.mp4 https://google.com/file/976582ec7e383/0019start.mp4 https://google.com/file/20ab0d8a2856c/0020start.mp4 https://google.com/file/dwtgink/0021start.mp4 https://google.com/file/df3b1c7694b27/0022start.mp4 https://google.com/file/deletelink/0023start.mp4 https://google.com/file/deletelink/0024start.mp4 https://google.com/file/9ce184ff0b163/0025start.mp4 ![]() |
|
Отправлено: 15:17, 14-12-2023 |
Ветеран Сообщения: 1758
|
|
Отправлено: 17:29, 14-12-2023 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 546
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
и вопросик. если мне нужно таким образом проверить 50 txt файлов, и заменить оригиналы, на то, что результировал скрипт, нужно так делать? и перекопировать этот код 50 раз изменяя имена файлов? ничего не нарушится при этом? |
|
Отправлено: 19:49, 14-12-2023 | #3 |
Ветеран Сообщения: 1758
|
Цитата Alexander_88:
[uri[]] $urls = gc list-in.txt $urls | group-object { $_.Segments[-1] -replace '(?<=\d4).+' } | % { $_.Group[-1].OriginalString } | sc list-out.txt Цитата Alexander_88:
|
||
Отправлено: 21:28, 14-12-2023 | #4 |
Ветеран Сообщения: 546
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
Цитата Foreigner:
![]() |
|||
Отправлено: 21:37, 14-12-2023 | #5 |
Ветеран Сообщения: 1758
|
Цитата Alexander_88:
|
|
Отправлено: 21:46, 14-12-2023 | #6 |
Ветеран Сообщения: 546
|
Профиль | Отправить PM | Цитировать Foreigner, попробовал второй вариант, но как будто бы ничего не поменялось.. также зависит от имени и расширения а не только от номера.. т.е. заменяет, если полностью совпадает имя файла (номер имя и расширение)
![]() |
Отправлено: 21:21, 15-12-2023 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать @Echo Off &Cls >nul Chcp 1251 SetLocal EnableDelayedExpansion Call :MyDir "Z:\Box_In\*.txt" "Z:\Box_Out" Call :MyDir "Z:\Soft_In\*.txt" "Z:\Soft_In" Pause Exit /B :MyDir FOR %%f In (%1) DO Call :Replace "%%f" %2 Exit /B :Replace Echo %1 -^> %2 For /F "usebackq tokens=3 delims=:" %%i In (`2^>nul Find /C ":" %1`) Do Set /A N=%%i If %N% EQU 0 (Exit /B 1) Set /A N+=10000 >"%~2\%~nx1.tmp" (For /L %%i In (10001,1,%N%) Do ( Set /A M=%%i Set "M=/.*!M:~1!.*\..*" Set "SS=" For /F "usebackq delims=" %%s In (`2^>nul FindStr /R /E /C:"!M!" %1`) Do Set "SS=%%s" If Not "!SS!"=="" (Echo !SS!) )) >nul Move /Y "%~2\%~nx1.tmp" "%~2\%~nx1" Exit /B Папки могут и совпадать A если пути файлов разные для каждого пишем свой Call :MyDir |
------- Последний раз редактировалось megaloman, 16-12-2023 в 18:20. Отправлено: 18:13, 16-12-2023 | #8 |
Ветеран Сообщения: 546
|
Профиль | Отправить PM | Цитировать megaloman, спасибо, попробовал, теперь расширение и имя игнорирует как и нужно, только дольше обрабатывает
![]() все выводится не по порядку по номерам.. к примеру первые 5 строк с номерами файлов: 0625 0002 0628 0004 0102 |
Отправлено: 17:02, 17-12-2023 | #9 |
Ветеран Сообщения: 546
|
Профиль | Отправить PM | Цитировать Цитата Alexander_88:
|
|
Отправлено: 17:58, 17-12-2023 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Посчитать одинаковые значения в txt | ivan.vas | Скриптовые языки администрирования Windows | 4 | 05-10-2021 16:53 | |
CMD/BAT - [решено] Выборка и txt по списку в txt файле | cyberp1983 | Скриптовые языки администрирования Windows | 5 | 24-05-2018 20:27 | |
Любой язык - [решено] Заменить ссылки в одном тхт файле, взяв их из другого | Alexander_88 | Скриптовые языки администрирования Windows | 2 | 14-02-2016 09:25 | |
Любой язык - [решено] заменить ссылки из одного тхт на ссылки в другом тхт | Alexander_88 | Скриптовые языки администрирования Windows | 4 | 11-10-2015 16:46 | |
CMD/BAT - [решено] Заменить фамилию в .txt файле Помогите! | doorsman | Скриптовые языки администрирования Windows | 8 | 28-03-2012 00:14 |
|