0

クエリを介してXMLファイルをSQLサーバーにロードしていますが、問題は、複数の名前空間の問題がある10x10テーブルがあることです。私はこれをいくつかのvbscriptで解決できると考えました、そしてこれまでのところこれは私が持っているコードです。

Dim FSO, FLD, FIL

Dim strFolder

strFolder = "C:\Documents and Settings\Administrator\Desktop\Tests"

Set FSO = CreateObject ("Scripting.FileSystemObject")

Set FLD = FSO.GetFolder (strFolder)


For Each FIL in FLD.Files

Set objFS = CreateObject("Scripting.FileSystemObject")

i=1

Set objFile = objFS.OpenTextFile(FIL)

Do Until objFile.AtEndOfStream

    strLine = objFile.ReadLine

    If i=1 and InStr(strLine,"Data")> 0 Then

        strLine = Replace(strLine,"Data","Data1")

i=i+1

ElseIf i=2 and InStr(strLine,"Data")> 0 Then

        strLine = Replace(strLine,"Data","Data1")

i=i+1

ElseIf i=3 and InStr(strLine,"Data")> 0 Then

        strLine = Replace(strLine,"Data","Data2")

i=i+1

ElseIf i=4 and InStr(strLine,"Data")> 0 Then

        strLine = Replace(strLine,"Data","Data2")

i=i+1

ElseIf i=5 and InStr(strLine,"Data")> 0 Then

        strLine = Replace(strLine,"Data","Data3")

i=i+1

ElseIf i=6 and InStr(strLine,"Data")> 0 Then

        strLine = Replace(strLine,"Data","Data3")

i=i+1

ElseIf i=7 and InStr(strLine,"Data")> 0 Then

        strLine = Replace(strLine,"Data","Data4")

i=i+1

ElseIf i=8 and InStr(strLine,"Data")> 0 Then

        strLine = Replace(strLine,"Data","Data4")

i=i+1

ElseIf i=9 and InStr(strLine,"Data")> 0 Then

        strLine = Replace(strLine,"Data","Data5")

i=i+1

ElseIf i=10 and InStr(strLine,"Data")> 0 Then

        strLine = Replace(strLine,"Data","Data5")

i=i+1

ElseIf i=11 and InStr(strLine,"Data")> 0 Then

        strLine = Replace(strLine,"Data","Data6")

End If


    WScript.Echo strLine

Loop

next

When I run this via command prompt:

cd c:\

cscript /nologo Script.vbs >newfile

ren newfile example.xml

保存されたファイルexample.xmlは完璧です。つまり、ifthenステートメントを含むスクリプトの中心部分が正しく機能します。ただし、「tests」フォルダに1つのファイルしか保存しない場合にのみ正しく機能します。複数のファイルを保存し、同じようにcmdを使用すると、これらすべてのファイルが連続して保存されます。これを行う必要のあるファイルは約3,000あります。私がやりたいのは、各.xmlファイルでスクリプトを実行し、同じ名前のnew.xmlとして(新しい場所に上書きして)保存することです。フォルダ。同じ名前で編集して保存するにはどうすればよいですか?

ご協力いただきありがとうございます

4

1 に答える 1

0

それは何ですか、ある種の難読化コンテストですか?次のようにスクリプトを書き直すことをお勧めします。

strFolder = "C:\Documents and Settings\Administrator\Desktop\Tests"
strFolderResult = "C:\Documents and Settings\Administrator\Desktop\Tests\Result"

Set FSO = CreateObject("Scripting.FileSystemObject")
For Each f In FSO.GetFolder(strFolder).Files
    i = 1
    Set inFile = f.OpenAsTextStream(1)
    Set outFile = FSO.CreateTextFile(FSO.BuildPath(strFolderResult, f.Name), true)
    Do Until inFile.AtEndOfStream
        strLine = inFile.ReadLine
        If InStr(strLine, "Data") > 0 Then
            If i < 12 Then i = i + 1
            strLine = Replace(strLine, "Data", "Data" & i \ 2)
        End If
        outFile.WriteLine(strLine)
    Loop
    inFile.Close
    outFile.Close
Next
于 2012-06-15T18:58:28.373 に答える