0

6 時間ごとに実行される cfg ファイルで、タイムゾーンを別のタイムゾーンに置き換える VBScript があります。この置換は、スクリプトを実行するたびに VBScript が先頭行を削除するという 1 つの問題を除いて、完全に正常に機能します。cfg ファイルは次のようになります。

//
// 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

6 回実行すると、ホスト名の行自体が削除されます。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

前もって感謝します!よろしく、トム。

4

1 に答える 1

1

スクリプトの 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
于 2013-05-13T11:04:26.060 に答える