Seite 1 von 2

Kopieren wie mit einer Batchdatei?

Verfasst: 29.07.2009 14:18
von Don Hermano
Hallo alle Zusammen, jetzt bin ich gerade mal ein paar Stunden stolzer Besitzer einer Purbasic Lizenz und schon häufen sich die Fragen.

Ich möchte von einem Serverlaufwerk (Lese und Schreibrechte vorhanden) ein Template für unsere AutoCAD User (Ordner mit Unterordner und Dateien)
auf den jeweiligen Client kopieren. Das dient dazu die Grundeinstellungen von AutoCAD wieder herzustellen wenn gar nichts mehr geht.

Das alles habe ich bis jetzt einfach per Batch-Datei erledigt, da ist es
ja so das die Ordner/Dateien einfach Über den Bestand drüberkopiert werden können und fehlende Dateien werden einfach hinzugefügt.

Laut Beispiel in der Hilfe sollte das ganze so aussehen:

Code: Alles auswählen

CopyDirectory("P:\OFML_Updates\Tools\BCMP\Help", "D:\EGR\Programme\BueroCAD MP OEM\BCMP\Support\Help", "", #PB_FileSystem_Recursive)          
CopyDirectory("P:\OFML_Updates\Tools\BCMP\ACAD", "D:\EGR\Programme\BueroCAD MP OEM\BCMP\win\ACAD", "", #PB_FileSystem_Recursive)              
CopyDirectory("P:\OFML_Updates\Tools\BCMP\PLKP", "D:\EGR\Programme\BueroCAD MP OEM\PLKP", "", #PB_FileSystem_Recursive)                       
CopyDirectory("P:\OFML_Updates\Tools\BCMP\Script", "D:\EGR\Programme\BueroCAD MP OEM\BCMP\Script", "", #PB_FileSystem_Recursive)              
CopyDirectory("P:\OFML_Updates\Tools\BCMP\Template", "D:\EGR\Programme\BueroCAD MP OEM\BCMP\Template", "", #PB_FileSystem_Recursive)          
CopyFile("P:\OFML_Updates\Tools\BCMP\BCMP.dwt", "D:\EGR\Programme\BueroCAD MP OEM\BCMP\Template\BCMP.dwt")      
CopyFile("P:\OFML_Updates\Tools\BCMP\BCMP.cui", "D:\EGR\Programme\BueroCAD MP OEM\BCMP\Support\BCMP.cui")       
CopyFile("P:\OFML_Updates\Tools\BCMP\Blaha.ctb", "D:\EGR\Programme\BueroCAD MP OEM\BCMP\Plot Styles\Blaha.ctb") 
CopyFile("P:\OFML_Updates\Tools\BCMP\standard.reg", "D:\EGR\Programme\BueroCAD MP OEM\standard.reg")

RunProgram ("D:\EGR\Programme\BueroCAD MP OEM\standard.reg")
Passieren tut aber nichts, bin ich einfach nur blöd oder habe ich einen falschen Gedankengang?

Vielleicht kann mir jemand weiterhelfen?

Gruß
Don Hermano

Code-Tags ergänzt - Kaeru fecit

Verfasst: 29.07.2009 14:31
von Little John
Hallo,

bei Deinen CopyDirectory()-Befehlen hast Du als Parameter für das Dateinamen-Muster immer "" angegeben. Sollte das nicht eher "*.*" sein?

Gruß, Little John

Verfasst: 29.07.2009 14:35
von ts-soft
Am besten machste erstmal nur ein Copydirectory und läßte Dir das ergebnis
debuggen. Wenns fehlschlägt vergleichste nochmal die Beschreibung, das
Beispiel in der Hilfe mit Deinen Code. Z.B. enden Deine Pfadangaben nicht
mit einem Backslash.
Wenn das klappt, vervollständigst den Code und machts mit Copyfile weiter,
bis es funktioniert und Du alle Fehler gefunden hast.

PS: wirklich Sinnvoll dies als Exe zu machen, gegenüber einem Batch ist es
wirklich nicht, aber vielleicht eine nette Übung für Dich :wink:

Gruß

Thomas

Verfasst: 29.07.2009 15:01
von Kiffi
Little John hat geschrieben:bei Deinen CopyDirectory()-Befehlen hast Du als Parameter für das Dateinamen-Muster immer "" angegeben. Sollte das nicht eher "*.*" sein?
[grins] war auch mein erster Gedanke, aber ein Blick in die Hilfe und
ich war schlauer:
Standardmäßig ein Null-String ("") als Pattern$ wird alle Dateien kopieren.
(seltsame Formulierung btw...)

Grüße ... Kiffi

Verfasst: 29.07.2009 15:50
von Little John
Kiffi hat geschrieben:[grins] war auch mein erster Gedanke, aber ein Blick in die Hilfe und
ich war schlauer:
Standardmäßig ein Null-String ("") als Pattern$ wird alle Dateien kopieren.
Ooops ... ja. ich habe CopyDirectory() selbst noch nie benutzt.

Gruß, Little John

Verfasst: 30.07.2009 08:08
von Waldixxl
Hallo Don Hermano
wenn ich mich nicht täusche legt CopyDirectory() das Zielverzeichnis nicht automatisch an.
d.h. Diese Verzeichnis erst per Hand anlegen
(kann es aus Zeitmangel nicht testen)
Viel Glück

Verfasst: 30.07.2009 10:43
von Don Hermano
Danke Leute für eure raschen Antworten!

Tja bis jetzt habe ich folgendes geschafft:
1. Der Code ist soweit in Ordnung solange er Lokal ausgeführt wird, also von c:\ nach d:\

2. Über Netzwerk weigert sich das Programm standhaft - im übrigen
habe ich einen Bekannten gebeten ob er eine Möglichkeit kennt.
Sein Programm in C# funktioniert problemlos.

Ich werde jetzt die Not zur Tugend machen und alle Templates mit
samt der .exe lokal bunkern. Dann können die Anwender auch ihr
AutoCAD reparieren wenn sie vor Ort beim Kunden sind und nicht im Netz hängen.

Ach ja, noch eine Frage ich starte mit
RunProgram ("D:\EGR\Programme\BueroCAD MP OEM\standard.reg")
die Registrierungsdatei - kann man irgendwie diese nervende Bestätigung
von Windows abstellen (...sind sie sicher das sie diese Registrierungsdatei ausführen wollen.... etc.)

Gruß aus Österreich

Don Hermano

ps. sehr nettes Board!

Verfasst: 30.07.2009 10:55
von ts-soft
Don Hermano hat geschrieben: Ach ja, noch eine Frage ich starte mit
RunProgram ("D:\EGR\Programme\BueroCAD MP OEM\standard.reg")
die Registrierungsdatei - kann man irgendwie diese nervende Bestätigung
von Windows abstellen (...sind sie sicher das sie diese Registrierungsdatei ausführen wollen.... etc.)
Sollte so gehen:

Code: Alles auswählen

RunProgram("Regedit", "/S " + #DQUOTE$ + "D:\EGR\Programme\BueroCAD MP OEM\standard.reg" + #DQUOTE$, "")
Allerdings wird unter Vista/7 UAC aufpoppen.

Für das, was Du bisher machst ist aber die Batch-Datei das optimale
Werkzeug, exe erschwert nur die Wartung.

Verfasst: 30.07.2009 10:57
von Rokur
Du kannst den Registrierungseditor mit der Option /s (heißt wohl silent) aufrufen:

Code: Alles auswählen

Regedit /s Datei.reg

Verfasst: 30.07.2009 11:09
von ts-soft
Don Hermano hat geschrieben: 2. Über Netzwerk weigert sich das Programm standhaft - im übrigen
habe ich einen Bekannten gebeten ob er eine Möglichkeit kennt.
Sein Programm in C# funktioniert problemlos.
Hab das kopieren mal auf einem Netzlaufwerk getestet, funktioniert tadellos.