Windows VBScript删除行
我有一个VBScript,它将cfg文件中的一个时区替换为另一个时区,该文件每6小时运行一次。除了一个问题外,替换工作非常好,每次运行脚本时,VBScript都会删除顶行。cfg文件如下所示:Windows VBScript删除行,windows,batch-file,vbscript,Windows,Batch File,Vbscript,我有一个VBScript,它将cfg文件中的一个时区替换为另一个时区,该文件每6小时运行一次。除了一个问题外,替换工作非常好,每次运行脚本时,VBScript都会删除顶行。cfg文件如下所示: // // config.cfg // // comments are written with "//" in front of them. // GLOBAL SETTINGS hostname = "Blablabla (v1.7.6.1/Build 103718) [REGULAR|3DP:O
//
// config.cfg
//
// comments are written with "//" in front of them.
// GLOBAL SETTINGS
hostname = "Blablabla (v1.7.6.1/Build 103718) [REGULAR|3DP:ON|CH:ON][UTC-2] - SomeMoreCharactersAndText
VBScript会将UTC-2更改为其他可以正常工作的值,尽管每次运行时,VBScript都会删除顶行,因此在运行3次后看起来是这样的:
// comments are written with "//" in front of them.
// GLOBAL SETTINGS
hostname = "Blablabla (v1.7.6.1/Build 103718) [REGULAR|3DP:ON|CH:ON][UTC-2] - SomeMoreCharactersAndText
运行六次后,它将删除主机名行本身。我想知道VBScript代码是否有问题?
我从批处理文件执行VBScript,批处理文件如下所示:
@echo off
echo Setting Current Timezone...
cd "C:\Program Files (x86)\Steam\SteamApps\common\Arma 2 CO\dayz_1.chernarus"
rename config_XXXXXX.cfg config_XXXXXX_old.cfg
cscript /nologo myreplace.vbs > newfile
ren newfile config_XXXXXX.cfg
del config_XXXXXX_old.cfg
这就是VBScript本身:
Set objFS = CreateObject("Scripting.FileSystemObject")
strFile = "C:\Program Files (x86)\Steam\SteamApps\common\Arma 2 CO\dayz_1.chernarus\config_XXXXXX_old.cfg"
Set objFile = objFS.OpenTextFile(strFile)
strLine = objFile.ReadLine
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
If InStr(strLine,"UTC-8")> 0 Then
strLine = Replace(strLine,"UTC-8","UTC+10")
ElseIf InStr(strLine,"UTC+10")> 0 Then
strLine = Replace(strLine,"UTC+10","UTC+4")
ElseIf InStr(strLine,"UTC+4")> 0 Then
strLine = Replace(strLine,"UTC+4","UTC-2")
ElseIf InStr(strLine,"UTC-2")> 0 Then
strLine = Replace(strLine,"UTC-2","UTC-8")
End If
WScript.Echo strLine
Loop
objFile.Close
提前谢谢!你好,汤姆。脚本IO部分的结构:
strLine = objFile.ReadLine (a)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine (b)
...
WScript.Echo strLine (c)
Loop
显示第一行(a)没有回声,而下面的所有行(b)都没有回声
尝试:
strLine = objFile.ReadLine (a)
WScript.Echo strLine (c)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine (b)
...
WScript.Echo strLine (c)
Loop