![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Заменить ссылки в txt файле, найдя одинаковые номера |
|
Любой язык - [решено] Заменить ссылки в txt файле, найдя одинаковые номера
|
Ветеран Сообщения: 558 |
Здравствуйте, подскажите как сделать такое на 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 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Alexander_88, чтобы быстро и с сортировкой по возрастанию - vbs
Option Explicit Dim BoxIn, AllFol AllFol = Array("Z:\Box_In", _ "Z:\Soft_In") Dim FSO, App, Fol, Itm, File, S, SS, Reg, num, i, Max Set FSO = CreateObject("Scripting.FileSystemObject") Set App = CreateObject("Shell.Application") Set Reg = CreateObject("VBScript.RegExp"): Reg.Global = True For Each BoxIn In AllFol Set Fol = App.Namespace(BoxIn) Set Itm = Fol.Items() Itm.Filter 64 + 128, "*.txt" ReDim AllOut(9999) For Each File In Itm File = BoxIn + "\" + File.Name With FSO.OpenTextFile(File, 1, False) Max = 0 Do While Not .AtEndOfStream SS = .ReadLine If SS <> Empty Then S = Split(SS, "/") i = UBound(S) num = FSO.GetBaseName(S(i)) If Reg.Test(num) Then Reg.Pattern = "\D" num = CLng(Reg.Replace(num, "")) If num <= 9999 Then If Max < num Then Max = num AllOut(num) = SS End If End If End If Loop .Close End With With FSO.OpenTextFile(File, 2, True) For i = 1 To Max If AllOut(i) <> Empty Then .WriteLine (AllOut(i)) Next .Close End With Next Next |
------- Отправлено: 17:40, 18-12-2023 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать а куда выходит результирующий файл? или он заменяется?
Option Explicit Dim BoxIn, AllFol AllFol = Array("C:\Work\CONTENT") Dim FSO, App, Fol, Itm, File, S, SS, Reg, num, i, Max Set FSO = CreateObject("Scripting.FileSystemObject") Set App = CreateObject("Shell.Application") Set Reg = CreateObject("VBScript.RegExp"): Reg.Global = True For Each BoxIn In AllFol Set Fol = App.Namespace(BoxIn) Set Itm = Fol.Items() Itm.Filter 64 + 128, "fileslink.txt" ReDim AllOut(9999) For Each File In Itm File = BoxIn + "\" + File.Name With FSO.OpenTextFile(File, 1, False) Max = 0 Do While Not .AtEndOfStream SS = .ReadLine If SS <> Empty Then S = Split(SS, "/") i = UBound(S) num = FSO.GetBaseName(S(i)) If Reg.Test(num) Then Reg.Pattern = "\D" num = CLng(Reg.Replace(num, "")) If num <= 9999 Then If Max < num Then Max = num AllOut(num) = SS End If End If End If Loop .Close End With With FSO.OpenTextFile(File, 2, True) For i = 1 To Max If AllOut(i) <> Empty Then .WriteLine (AllOut(i)) Next .Close End With Next Next |
Отправлено: 21:47, 19-12-2023 | #12 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Цитата Alexander_88:
Такой файл имеется? Тут архив тестового комплекта. На нём работает. Вот вариант скрипта с проверкой существования файла(ов)
Option Explicit Dim BoxIn, AllFol AllFol = Array("C:\Work\CONTENT") '("Z:\Box_In", "Z:\Soft_In") Const Mask = "fileslink.txt" '"*.txt" Dim FSO, App, Fol, Itm, File, S, SS, Reg, num, i, Max Set FSO = CreateObject("Scripting.FileSystemObject") Set App = CreateObject("Shell.Application") Set Reg = CreateObject("VBScript.RegExp"): Reg.Global = True For Each BoxIn In AllFol Set Fol = App.Namespace(BoxIn) Set Itm = Fol.Items() Itm.Filter 64 + 128, Mask If Itm.Count <> 0 Then ReDim AllOut(9999) For Each File In Itm File = BoxIn + "\" + File.Name With FSO.OpenTextFile(File, 1, False) Max = 0 Do While Not .AtEndOfStream SS = .ReadLine If SS <> Empty Then S = Split(SS, "/") i = UBound(S) num = FSO.GetBaseName(S(i)) If Reg.Test(num) Then Reg.Pattern = "\D" num = CLng(Reg.Replace(num, "")) If num <= 9999 Then If Max < num Then Max = num AllOut(num) = SS End If End If End If Loop .Close End With With FSO.OpenTextFile(File, 2, True) For i = 1 To Max If AllOut(i) <> Empty Then .WriteLine (AllOut(i)) Next .Close End With Next Else MsgBox "File(s)" + vbCr + BoxIn + "\" + Mask + vbCr + "not found", 16, "Not found" End If Next Результирующий файл заменяется. Иное делается "на раз". |
|
------- Отправлено: 07:24, 20-12-2023 | #13 |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать megaloman, спасибо, все получилось, заменяет 800 ссылок очень быстро
![]() |
Отправлено: 07:59, 21-12-2023 | #14 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Посчитать одинаковые значения в 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 |
|