Batya
|
Posted: Tue Oct 12, 2010 14:20 Post subject: |
|
|
vbs-cкрипт для полного решения изначальной задачи:
Code: | EnvArray = Array("COMMANDER_PATH", "WINDIR", "PROGRAMFILES")
Dim ReplArray
Set ReplArray = CreateObject("Scripting.Dictionary")
ReplArray.Add "Что менять", "На что менять"
ReplArray.Add "Так можно", "несколько раз"
'-----------------------------------
Param1 = 0:Param2 = "":Param3 = ""
If WScript.Arguments.Count > 0 Then Param1 = WScript.Arguments(0)
If WScript.Arguments.Count > 1 Then Param2 = WScript.Arguments(1)
If WScript.Arguments.Count > 2 Then Param3 = WScript.Arguments(2)
With CreateObject("TCScript.Helper")
.SendCommand "cm_CopyFullNamesToClip", True
Clip = .GetTextFromClip
With CreateObject("WScript.Shell")
For Each E In EnvArray
E = "%" & E & "%"
Clip = Replace(Clip, .ExpandEnvironmentStrings(E), E, 1, -1, 1)
Next
End With
For Each K In ReplArray.Keys
Clip = Replace(Clip, K, ReplArray(K), 1, -1, 1)
Next
Clip = vbLf & Clip & vbCr
If Param1 = "1" Then Clip = RegExpReplace(Clip, "(\n)(.+)(\r)", "$1""$2""$3")
Clip = RegExpReplace(Clip, "(\n)(.+)(\r)", "$1" & Param2 & "$2$3")
Clip = RegExpReplace(Clip, "(\n)(.+)(\r)", "$1$2" & Param3 & "$3")
Clip = Mid(Clip, 2, Len(Clip) - 2)
.SetTextToClip(Clip)
End With
Function RegExpReplace(pText, pReplStr1, pReplStr2)
With New RegExp
.Pattern = pReplStr1
.IgnoreCase = True
.Global = True
RegExpReplace = .Replace(pText, pReplStr2)
End With
End Function |
Здесь в первой строке в массиве EnvArray нужно перечислить переменные окружения, которые могут быть заменены.
Для реализации п.1 задачи начитываем массив ReplArray.
Для реализации п.2 задачи используется первый параметр к скрипту. Значения 1 (добавлять кавычки) или 0 (не добавлять - по умолчанию).
Для реализации п.3 задачи используются второй и третий параметры к скрипту - добавочные приставка и окончание к каждой строке. _________________ Нет, я не сплю. Я просто медленно моргаю.
Last edited by Batya on Tue Oct 12, 2010 16:50; edited 2 times in total |
|