【发布时间】:2011-08-12 22:46:01
【问题描述】:
我正在处理一个脚本,如果没有你的帮助,我将无法创建它。
这就是我需要的:我有两个 .txt 文件,一个包含变量(在两个 @ 之间),如下所示:
@PickupFolder@=E:/SonicDataFiles/AR_INT/GPP_VE/IN
@Db1Url@=jdbc:sonic:sqlserver://CARASETMS:1433;databaseName=CRM
其他.txt有变量需要从上一个文件补完
@Db1Url@=
@Db1Pwd@=
我需要获取第一个文件中的每个变量(我想我必须使用正则表达式)并在变量退出时替换它在第二个文件中的值。
如果有人有类似的脚本来获得想法,我将不胜感激。我正在尝试使用 VBS。
非常感谢。
杰拉尔多。
阿根廷布宜诺斯艾利斯。
这是我的原始脚本:
'ReplaceScript "c:\Variables_INT.txt" "C:\AR_INT.tailoring.properties"
'DEFINE CONSTANTS
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
'DEFINE VARIABLES
strTxtFile = Wscript.Arguments(0)
strTailoringFile = Wscript.Arguments(1)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WshShl = WScript.CreateObject("WScript.Shell")
Set objFileVariablesTXT = objFSO.OpenTextFile (strTxtFile, ForReading) 'Variables_INT.txt
Set objFileTailoring = objFSO.OpenTextFile (strTailoringFile, ForReading) 'AR_INT.tailoring.properties
Dim strQuartz, strPickupfFolder, strUrl, strDbPwd, strDbUser, strDbDestTable
strSearchString = objFileVariablesTXT.ReadAll
'SEARCH THE FILE FOR THE NEEDED DATA
vQuartz = InStr(strSearchString, "@QuartzJars@=")
vPickupFolder = InStr(strSearchString, "@PickupFolder@=")
vDbUrl = InStr(strSearchString, "@Db1Url@=")
vDbPwd = InStr(strSearchString, "@Db1Pwd@=")
vDbUser = InStr(strSearchString, "@Db1User@=")
vDbDestTable = InStr(strSearchString, "@DestinationTable@=")
'PARSE OUT THE NEEDED INFO
If vQuartz <> 0 Then
'vQuartz = vQuartz + 13
strQuartz = Mid(strSearchString, vQuartz, 304)
' WScript.Echo strQuartz
End If
If vPickupFolder <> 0 Then
'vPickupFolder = vPickupFolder + 15
strPickupfFolder = Mid(strSearchString, vPickupFolder, 50)
' WScript.Echo strPickupfFolder
End If
If vDbUrl <> 0 Then
'vDbUrl = vDbUrl + 9
strUrl = Mid(strSearchString, vDbUrl, 65)
' WScript.Echo strUrl
End If
If vDbPwd <> 0 Then
'vDbPwd = vDbPwd + 9
strDbPwd = Mid(strSearchString, vDbPwd, 17)
'WScript.Echo strDbPwd
End If
If vDbUser <> 0 Then
'vDbUser = vDbUser + 10
strDbUser = Mid(strSearchString, vDbUser, 25)
'WScript.Echo strDbUser
End If
If vDbDestTable <> 0 Then
'vDbDestTable = vDbDestTable + 19
strDbDestTable = Mid(strSearchString, vDbDestTable, 29)
'WScript.Echo strDbDestTable
End If
objFileVariablesTXT.Close
strReplaceString = objFileTailoring.ReadAll
arrReplacements = Array("@QuartzJars@=Ç" & strQuartz , "@PickupFolder@=Ç" & strPickupfFolder, "@Db1Url@=Ç" & strUrl, "@Db1Pwd@=Ç" & strDbPwd, "@Db1User@=Ç" &strDbUser, "@DestinationTable@=Ç" & strDbDestTable)
objFileTailoring.Close
Set objFileTailoring = Nothing
For Each strReplacement In arrReplacements
strReplaceWhat = Split(strReplacement, "Ç")(0)
'WScript.Echo strReplaceWhat
strReplaceWith = Split(strReplacement, "Ç")(1)
'WScript.Echo strReplaceWith
strReplaceString = Replace(strReplaceString, strReplaceWhat, strReplaceWith)
Next
'wScript.Echo strReplaceString
Set objFileTailoring = objFSO.OpenTextFile(strTailoringFile, 2, true)
objFileTailoring.Write strReplaceString
objFileTailoring.Close
【问题讨论】:
-
感谢让-弗朗索瓦。是的,我创建了一个有效的脚本,但我的问题是我需要一个脚本来查找文件中的每个变量,我正在硬编码它们的名称来搜索它们
标签: regex variables vbscript replace