CMD/BAT - Скопировать телефоны из .VCF

Аватара пользователя
Valek271183

CMD/BAT - Скопировать телефоны из .VCF

Сообщение Valek271183 »

Есть папка с кучей контактов в формате .VCF (Например Вася.VCF, Маша.VCF и т.д.), в каждом из них есть строчка с телефоном начинающаяся с TEL;CELL:89055000000 Можно ли из этой кучи контактов сделать один файлик с Именами и Телефонами с помощью CMD/BAT ?
Аватара пользователя
Iska

Re: CMD/BAT - Скопировать телефоны из .VCF

Сообщение Iska »

Valek271183, упакуйте пару-тройку таких файла в архив, выложите сюда или на RGhost.
Аватара пользователя
Iska

Re: CMD/BAT - Скопировать телефоны из .VCF

Сообщение Iska »

Valek271183, попробуйте так (на WSH):



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

Option Explicit
Dim strSourceFolder
Dim objFSO
Dim objFile
Dim objTS
Dim strContent
If WScript.Arguments.Count = 1 Then
	strSourceFolder = WScript.Arguments.Item(0)
	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
	If objFSO.FolderExists(strSourceFolder) Then
		Set objTS = Nothing
		For Each objFile In objFSO.GetFolder(strSourceFolder).Files
			If StrComp(objFSO.GetExtensionName(objFile.Name), "vcf", vbTextCompare) = 0 Then
				With objFile.OpenAsTextStream()
					strContent = .ReadAll()
					.Close
				End With
				With WScript.CreateObject("VBScript.RegExp")
					.Pattern = "^BEGIN:VCARD\r\nVERSION:2.1\r\nN;CHARSET=(.*);ENCODING=QUOTED-PRINTABLE:;(.*);;;\r\nTEL;CELL:(.*)\r\n[\s\S]*END:VCARD$"
					.MultiLine = True
					If .Test(strContent) Then
						With .Execute(strContent).Item(0).Submatches
							If objTS Is Nothing Then
								Set objTS = objFSO.CreateTextFile("Result.txt", True)
							End If
							objTS.WriteLine QuotedPrintableDecode(Trim(.Item(1)), .Item(0)) & "," & .Item(2) & "," & objFile.Path
						End With
					Else
						WScript.Echo "Can't find Name and Phone in file [" & objFile.Path & "]."
					End If
				End With
			End If
		Next
		If Not objTS Is Nothing Then
			objTS.Close
			Set objTS = Nothing
		End If
	Else
		WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
		WScript.Quit 2
	End If
Else
	WScript.Echo "Usage: cscript.exe //nologo " & WScript.ScriptName & " "
	WScript.Quit 1
End If
WScript.Quit 0
'=============================================================================
'=============================================================================
Function QuotedPrintableDecode(strValue, strCharSet)
	With WScript.CreateObject("CDO.Message")
		.BodyPart.ContentTransferEncoding = "quoted-printable"
		With .BodyPart.GetEncodedContentStream
			.charset = "windows-1250"
			.WriteText strValue
			.Flush
		End With
		With .BodyPart.GetDecodedContentStream
			.CharSet = strCharSet
			QuotedPrintableDecode = .ReadText()
		End With
	End With
End Function
'=============================================================================







Исходная папка задаётся аргументом скрипта (можно просто перетащить папку на скрипт в Проводнике).
Аватара пользователя
Valek271183

Re: CMD/BAT - Скопировать телефоны из .VCF

Сообщение Valek271183 »

Пишет Сценарий не указан, папка с контактами с именем 123 с корне диска С:\ - перетаскиваю её на скрипт и пишет Сценарий не указан
Аватара пользователя
Iska

Re: CMD/BAT - Скопировать телефоны из .VCF

Сообщение Iska »

Цитата Valek271183:



Пишет Сценарий не указан,
CMD/BAT - Скопировать телефоны из .VCF




Сохраняйте код в файл с расширением «.vbs», а не «.wsh».
Аватара пользователя
Valek271183

Re: CMD/BAT - Скопировать телефоны из .VCF

Сообщение Valek271183 »

Пишет ошибку Can't find Name and Phone in file

строка 37 символ 8 недопустимый вызов или аргумент процедуры
Аватара пользователя
Iska

Re: CMD/BAT - Скопировать телефоны из .VCF

Сообщение Iska »

Цитата Valek271183:



Пишет ошибку Can't find Name and Phone in file
CMD/BAT - Скопировать телефоны из .VCF




В каком именно файле пишет?




Цитата Valek271183:



строка 37 символ 8 недопустимый вызов или аргумент процедуры
CMD/BAT - Скопировать телефоны из .VCF




Покажите скриншот или содержимое окна ошибки («Ctrl-C» в окне сообщения об ошибке).
Аватара пользователя
Valek271183

Re: CMD/BAT - Скопировать телефоны из .VCF

Сообщение Valek271183 »

---------------------------

Windows Script Host

---------------------------

Сценарий: C:\Text.vbs

Строка: 37

Символ: 8

Ошибка: Недопустимый вызов или аргумент процедуры

Код: 800A0005

Источник: Ошибка выполнения Microsoft VBScript



---------------------------

ОК

---------------------------

это при перетаскивание на Text.vbs
Аватара пользователя
Iska

Re: CMD/BAT - Скопировать телефоны из .VCF

Сообщение Iska »

Давайте уточним: строка 37 — это: «objTS.WriteLine QuotedPrintableDecode(Trim(.Item(1)), .Item(0)) & "," & .Item(2) & "," & objFile.Path», так?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»