Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
Любой язык - [решено] Заменить ссылки в одном тхт файле, взяв их из другого

Ветеран


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

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


Здравствуйте, подскажите, пожалуйста, как можно заменить ссылки в одном тхт файле, на ссылки из другого, ориентируясь по имени файла?

Пример файла 1.txt, в котором нужно заменить ссылки:

Код: Выделить весь код
<a href="http://google.com/file/8b3diflsghc0de/0001start.wmv" target="_blank">Download - 92.9 MB</a>
<a href="http://google.com/file/b7dikd67gl343ff1/0002start.wmv" target="_blank">Download - 31.0 MB</a>
<a href="http://google.com/file/addjkd743e09/0003start.wmv" target="_blank">Download - 163.5 MB</a>
<a href="http://google.com/file/2def75kf88d24c/0004start.wmv" target="_blank">Download - 73.3 MB</a>
<a href="http://google.com/file/82bfk548fk431c2c/0005start.wmv" target="_blank">Download - 82.4 MB</a>
<a href="http://google.com/file/03d3fi458fk5139/0006start.wmv" target="_blank">Download - 39.9 MB</a>
Пример файла 2.txt, из которого нужно брать ссылки и заменять по имени файла (0001start.wmv, 0002start.wmv, и т.д.)

Код: Выделить весь код
http://yandex.ru/file/dd5dfh55hj458c40/0001start.wmv
http://yandex.ru/file/aahgj5656rhh02228e/0002start.wmv
http://google.com/file/afgh5674dfadfd310/0003start.wmv
http://yandex.ru/file/92fgh6574j1330899/0004start.wmv
http://google.com/file/afgh454h918235/0005start.wmv
http://yandex.ru/file/88efgh46hgf0e0ad6/0006start.wmv
http://google.com/file/f55fh451582/0007start.flv
http://yandex.ru/file/421afgh45h4c5e85/0008start.wmv
http://yandex.ru/file/ea77bfg5453330ce/0009start.wmv
http://google.com/file/2786544ghfa78dd5/0010start.wmv
http://yandex.ru/file/1e47456h5dda2f/0011start.wmv
http://yandex.ru/file/526154g33fdd09d/0012start.wmv
http://yandex.ru/file/fee956rthr45h5b9575/0013start.wmv
http://yandex.ru/file/ad5854h4h54c4a581/0014start.wmv
http://yandex.ru/file/de6bht45hrth807de3/0015start.wmv
Примечания:
Часть, которая должна замениться в файле 1.txt, выделена жирным (т.е. теги все должны остаться).
Необходимо заменять именно по имени файла, сами ссылки разные, домены тоже могут быть разные.
Каждая ссылка всегда начинается с новой строки в обоих тхт файлах.
Количество ссылок в двух тхт файлах всегда разное... после выполнения операции в файле 1.txt должно остаться тоже количество ссылок, только они должны быть заменены ссылками из файла 1.txt.

В примере, после выполнения операции, файл 1.txt должен стать таких:

Код: Выделить весь код
<a href="http://yandex.ru/file/dd5dfh55hj458c40/0001start.wmv" target="_blank">Download - 92.9 MB</a>
<a href="http://yandex.ru/file/aahgj5656rhh02228e/0002start.wmv" target="_blank">Download - 31.0 MB</a>
<a href="http://google.com/file/afgh5674dfadfd310/0003start.wmv" target="_blank">Download - 163.5 MB</a>
<a href="http://yandex.ru/file/92fgh6574j1330899/0004start.wmv" target="_blank">Download - 73.3 MB</a>
<a href="http://google.com/file/afgh454h918235/0005start.wmv" target="_blank">Download - 82.4 MB</a>
<a href="http://yandex.ru/file/88efgh46hgf0e0ad6/0006start.wmv" target="_blank">Download - 39.9 MB</a>

Отправлено: 07:58, 14-02-2016

 

Ветеран


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

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


На WSH:
Скрытый текст
Код: Выделить весь код
Option Explicit

Const ForWriting = 2

Dim strSourceFile
Dim strPatternFile

Dim strContent
Dim strLine

Dim objDictionary
Dim strKey


strSourceFile =  "C:\Мои проекты\36\1.txt"
strPatternFile = "C:\Мои проекты\36\2.txt"

With WScript.CreateObject("Scripting.FileSystemObject")
	If .FileExists(strSourceFile) Then
		If .FileExists(strPatternFile) Then
			With .OpenTextFile(strPatternFile)
				strContent = .ReadAll()
				.Close
			End With
			
			Set objDictionary = WScript.CreateObject("Scripting.Dictionary")
			
			For Each strLine In Split(strContent, vbCrLf)
				strLine = Trim(strLine)
				
				If Len(strLine) > 0 Then
					objDictionary.Add .GetFileName(strLine), strLine
				End If
			Next
			
			With .OpenTextFile(strSourceFile)
				strContent = .ReadAll()
				.Close
			End With
			
			With WScript.CreateObject("VBScript.RegExp")
				.IgnoreCase = True
				.Global     = True
				
				For Each strKey In objDictionary.Keys
					.Pattern = "(<a href="")(http://.*?/" & strKey & ")("".*?>.*?</a>)"
					
					If .Test(strContent) Then
						strContent = .Replace(strContent, "$1" & objDictionary.Item(strKey) & "$3")
					End If
				Next
			End With
			
			.CopyFile strSourceFile, .BuildPath(.GetParentFolderName(strSourceFile), .GetBaseName(strSourceFile) & ".bak"), True
			
			With .OpenTextFile(strSourceFile, ForWriting)
				.Write strContent
				.Close
			End With
			
			objDictionary.RemoveAll
			Set objDictionary = Nothing
		Else
			WScript.Echo "Can't find pattern file [" & strPatternFile & "]."
			WScript.Quit 2
		End If
	Else
		WScript.Echo "Can't find source file [" & strSourceFile & "]."
		WScript.Quit 1
	End If
End With

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:30, 14-02-2016 | #2



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

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


Ветеран


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

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


Спасибо, все работает

Отправлено: 09:25, 14-02-2016 | #3



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] скопировать n последних строк одного тхт файла и вставить их в конец другого тхт файл Alexander_88 Скриптовые языки администрирования Windows 2 23-11-2015 16:38
Любой язык - [решено] заменить ссылки из одного тхт на ссылки в другом тхт Alexander_88 Скриптовые языки администрирования Windows 4 11-10-2015 16:46
CMD/BAT - поиск новой строки в тхт файле Xeruvim4ik Скриптовые языки администрирования Windows 8 17-02-2014 00:51
Любой язык - [решено] из одного тхт файла добавить содержимое во все тхт файлы папки gangsterovich Скриптовые языки администрирования Windows 3 06-05-2011 04:29
CMD/BAT - С помощью bat-ника найти и заменить текст в файле на текст из другого файла Nun-Nun Скриптовые языки администрирования Windows 1 08-03-2011 15:25




 
Переход