Ich habe ein Verzeichnis von Dateien, die ich durch Schleife durch und verwenden einen Teil ihrer Dateinamen Text in einer Vorlage doc zu ersetzen.VBscript Ersetzen von Text mit einem Teil des Dateinamens
Zum Beispiel ein Dateiname kann ‚NV_AD32_city.dxf‘ sein. Alle Dateien im Verzeichnis folgen dem gleichen Dateinamenmuster von XX_XXXX_string.dxf, wobei zwei Unterstriche verwendet werden.
Ich brauche die Zeichenfolge rechts von den ersten „_“ und links von der erfassen „“ so für dieses Beispiel, das wäre ‚AD32_city‘
Wie kann ich Skript-Capture zu verwenden, die Text der aktiven Datei, um Text in der Vorlage zu ersetzen? Ich denke, ich muss ein Objekt erstellen? Aber was ist das Objekt für die aktuelle Datei aus einem Verzeichnis? +++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++
Thx für die Antworten, Jungs. Nach einigen Tagen des Ausprobierens von Code verstehe ich es nicht. Ich verstehe, dass es eingerichtet ist, um den Teil der Zeichenfolge des Dateinamens zu übernehmen, den ich möchte, aber wie sage ich dem Skript, die aktuelle Datei zu verwenden, die ich durchlaufe? Hier ist mein Skript so weit. Ich habe den Code in Zeile 20 unter der Sub ‚GetNewInputs‘
Set fso = CreateObject("Scripting.FileSystemObject")
Option Explicit
Dim WritePath : WritePath = "S:\TempFolder\"
Dim OutFile : OutFile = "VEG_DXF-2-SHP_script-"
Dim WorkingFile : WorkingFile = GetFileContent(SelectFile())
Dim NewState, NewSection, NewArea
Dim OldState, OldSection, OldArea
Call GetNewInputs()
Call GetOldInputs()
Sub GetNewInputs()
NewState = UCase(InputBox("INPUT STATE:", _
"INPUT STATE", "SOCAL"))
NewSection = ("Section_" & InputBox("INPUT SECTION NUMBER:", _
"INPUT SECTION", "14"))
NewArea = "^[^_]+_(.*)\.dxf$"
End Sub
Private Sub GetOldInputs()
OldState = "XX"
OldSection = "_X"
OldArea = "ZZZZ"
End Sub
Function SelectFile()
SelectFile = vbNullString
Dim objShell : Set objShell = WScript.CreateObject("WScript.Shell")
Dim strMSHTA : strMSHTA = "mshta.exe ""about:" & "<" & "input type=file id=FILE>" _
&"<" & "script>FILE.click();new ActiveXObject('Scripting.FileSystemObject')" _
&".GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);" & "<" & "/script>"""
SelectFile = objShell.Exec(strMSHTA).StdOut.ReadLine()
If SelectFile = vbNullString Then
WScript.Echo "No file selected or not a text file."
WScript.Quit
End If
End Function
Private Function GetFileContent(filePath)
Dim objFS, objFile, objTS
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.GetFile(filePath)
Set objTS = objFile.OpenAsTextStream(1, 0)
GetFileContent = objTS.Read(objFile.Size)
Set objTS = Nothing
End Function
For Each FileRefIn fso.GetFolder("S:\SOCAL\Section_14\Veg DXFs\").Files
NewFile = WorkingFile
NewFile = Replace(NewFile, OldState, NewState)
NewFile = Replace(NewFile, OldSection, NewSection)
NewFile = Replace(NewFile, OldArea, NewArea)
WriteFile NewFile, WritePath & OutFile & ".gms"
WScript.Echo NewArea
Next
Private Sub WriteFile(strLine,fileName)
On Error Resume Next
Dim objFSO, objFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
Do Until IsObject(objFile)
Set objFile = objFSO.OpenTextFile(fileName, 8, True)
Loop
objFile.WriteLine strLine
objFile.Close
End Sub
Thx für die Antworten, Leute. Nach einigen Tagen des Ausprobierens von Code verstehe ich es nicht. Ich verstehe, dass es eingerichtet ist, um den Teil der Zeichenfolge des Dateinamens zu nehmen, den ich will, aber wie sage ich dem Skript, das von der aktuellen Datei zu nehmen, die ich durchlaufe? Hier ist mein Skript so weit: – Clutch