2016-11-23 10 views
-1

Mein Problem ist, dass ich eine Datei im Editor öffnen und dann im Editor speichern möchte, nicht manuell, sondern mit VBScript (der Grund, warum ich dies einige Codierungsprobleme überwinden will)). Bis jetzt habe ich eine relevante article gefunden, die mein Problem lösen sollte, aber es funktioniert nicht. Es hat diesen Code:Öffnen Sie eine Datei mit Editor und speichern Sie sie mit VBScript

Dim notepad, wndNotepad, strDesktop 

Set notepad = Sys.Process("notepad") 
Set wndNotepad = notepad.Window("Notepad") 

' Open a file in Notepad 
wndNotepad.MainMenu.Click("File|Open...") 
notepad.Window("#32770", "Open").OpenFile "C:\Program Files\SmartBear\TestComplete 12\install.txt" 

' Save the file to the desktop 
strDesktop = WshShell.SpecialFolders("Desktop") 
wndNotepad.MainMenu.Click "File|Save as..." 
notepad.Window("#32770", "Save As").SaveFile strDesktop & "\install.txt" 

Das Problem ist, dass Vbscript nicht das Sys in der zweiten Zeile erkennen kann (Sys.Process). Ich nehme an, dass in dieser Zeile ein Prozess für Notepad erstellt werden soll (like here) und dann etwas wie ein Objekt dieses Prozesses an den Variablenblock zurückgegeben werden soll (etwas, das ich nicht weiß, ob und wie man es erreichen kann) in der dritten Zeile verwendet (notepad.Window("Notepad")).

Wenn jemand irgendeine Idee hat, wie der Code sein sollte, um zu arbeiten, würde ich wirklich die Hilfe schätzen. Auch andere Vorschläge, wie dieses Problem zu lösen ist (oder Ideen, ob es tatsächlich gelöst werden kann) sind sehr willkommen. Vielen Dank für Ihre Zeit.

EDIT

Wie ich unten in den Kommentaren gesagt, muss der obige Code die Software Testcomplete was teuer ist. Wenn also jemand eine Idee hat, mein Problem auf andere Weise zu lösen (andere Software, anderer Code, andere Programmiersprache), würde ich mich freuen, es zu lernen.

+1

ich einen Text-Stream verwenden würde. Setzen Sie die Charset-Eigenschaft auf das, was Ihre Datei ist, lesen Sie die Datei, ändern Sie den Zeichensatz und schreiben Sie sie zurück. https://msdn.microsoft.com/en-us/library/ms675032(v=vs.85).aspx –

+1

Die kurze Antwort ist Sys.Process ist nicht In keiner der Windows nativen Bibliotheken benötigt es zusätzliche Bibliotheken. Möchte Google suchen, um herauszufinden, welche Bibliothek (DLL) diese Prozesse und Funktionen hat. –

+0

Der von Ihnen gepostete Code ist kein gültiges VBScript. Außerdem, warum möchten Sie eine Textdatei in Notepad öffnen, nur um sie unter einem anderen Namen zu speichern? Kopieren Sie einfach die Datei. Zum Beheben von Kodierungsproblemen: Stellen Sie eine Frage, die die tatsächlichen Probleme beschreibt. –

Antwort

0

Ich denke, Sie müssen eine Datei von einem Pfad zum anderen kopieren. Bitte beachten Sie den Code unten für das Kopieren von Dateien,

Funktion Copyfile()

strSourceFile = "c:\.....\source.txt" 
strDestFile = "c:\.....\dest.txt" 

Set fso = CreateObject("Scripting.FileSystemObject") 
'Check to see if the file is read-only 
If Not fso.GetFile(DestinationFile).Attributes And 1 Then 
    'The file exists and is not read-only. Safe to replace the file. 
    fso.CopyFile strSourceFile, strDestFile, strOverWrite 
Else 
    'The file exists and is read-only. 
    'Remove the read-only attribute 
    fso.GetFile(DestinationFile).Attributes = fso.GetFile(DestinationFile).Attributes - 1 
    'Replace the file 
    fso.CopyFile strSourceFile, strDestFile, strOverWrite 
    'Reapply the read-only attribute 
    fso.GetFile(DestinationFile).Attributes = fso.GetFile(DestinationFile).Attributes + 1 
End If 

End Function

+0

Vielen Dank für Ihre Antwort, aber ich wollte den Code zum Öffnen von Notizblock und dann speichern Sie es mit Notizblock. Der Grund war ein Unterschied, den ich in den Kodierungen der beiden Dateien sah (das Original und die Datei nach dem Speichern mit Notepad). Schließlich fand ich heraus, dass dies nicht notwendig war und mein Problem mit den Codierungen nicht lösen würde. – Thanasis

Verwandte Themen