2017-07-04 5 views
0

Ich arbeite an einem Powerbuilder 12.5 Programm, das ein xml to docx Konverter ist. Es nimmt XML-Dateien und Bilder und stapelt sie in einem Ordner, der als DOCX-Datei gezippt werden muss.Powerbuilder 12.5 - Windows-Befehl ausführen

Ich kann das mit Windows cmd Befehl zip -r 'path'.docx *, die eine Word-Datei erzeugt, die in MS Word geöffnet ist. 'path' ist, wo der Benutzer die Datei im Dateiexplorer und den Namen der Datei speichert - wird dynamisch generiert

Wie könnte ich diesen Befehl von Powerbuilder ausführen. Das Problem ist, dass, wenn ich die run() Funktion laufen lasse, öffnet es die cmd im voreingestellten Pfad, der ist c: \ Users \ ME \

Ich habe versucht, CD 'new_path && zip -r new_path.docx *, aber es funktioniert nicht. Es reißt den c: \ Users \ ME-Ordner.

Irgendwelche besseren Ideen?

Antwort

0

Sie können versuchen, aktuelles Verzeichnis vor zu setzen, erklären nur SetCurrentDirectoryA in externen Funktionen:

FUNCTION LONG SetCurrentDirectoryA(REF STRING curdir) LIBRARY "Kernel32.dll" 
+0

Jetzt, da ich das mache, öffnet die Run() - Funktion die Windows-Cmd - aber es zeigt auf den Oracle \ db_home-Ordner. Ich habe versucht, cmd.exe von Windows \ system32 in den Powerbuilder-Projektordner zu kopieren - kein Glück. Irgendwelche Ideen? – user6371567

0

ich nicht Fenster cmd gewohnt bin, aber wenn es in Linux-Terminal möglich ist, ist es möglich, in Fenster auch.

Der fertige Code sieht dies ike, nur analysiert Strings und den Lauf (Befehl)

ls_exec = "cmd /c cd /d "+ls_folder + " && zip -r "+ ls_folder+".docx * && cd /d "+ls_folder_1u + " && rmdir "+ls_file+" /s /q" 
run(ls_exec) 

Es funktioniert wie ein Charme. Vielen Dank für Ihre Anregungen.