Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Nash
Anmeldungsdatum: 18.07.2005 Beiträge: 6
|
Verfasst am: 18.07.2005, 09:42 Titel: Probleme mit Batchdatei |
|
|
Hi!
Ich bin ein ziemlicher Anfänger in QBasic und hab ein Problem mit dem ich einfach nicht weiterkomme: Ich habe ein Menü geschrieben, mit dem ich verschiedene Batch Dateien die zur Instrallation dienen aufrufen möchte. Wenn ich die Batchdateien normal über windows aufrufe, funktioniert alles wie es soll. Wenn ich aber über mein QBasic menü gehe, funktionieren die Batch dateien nicht wie sie sollen. Ich benutze die in der Batch-datei die Befehle:
rmdir /s /q "c:\verzeichnis a"
md "c:\verzeichnis b"
xcopy /e /i /h "ordner" "c:\verzeichnis b"
und ich will zwei Installations-exe's aufrufen, was ich mit
cd "ordner\unterordner 1"
exe1.exe
cd..
cd "unterordner 2"
exe1.exe
gemacht habe.
Wenn ich die Batch von QBasic menü mit dem SHELL befehl ausführe, funktioniert der rmdir-Befehl nicht mit einer falscher Parameter meldung, der md-befehl funktioniert garnicht und die Installations-exe's werden nicht geöffnet.
Was tun sprach Zeus? |
|
Nach oben |
|
 |
ioiCracr
Anmeldungsdatum: 06.07.2005 Beiträge: 24 Wohnort: Andernach (MYK)
|
Verfasst am: 18.07.2005, 09:54 Titel: |
|
|
Also mit dem rmdir Befehl kann ich dir nicht weiter helfen, aber warum gibst du nicht für die aufzurufenden Dateien nicht den konkreten Pfad an? Ist doch viel einfacher statt 'cd' zu nutzen.
z.b. C:\BatchDateien\Prog1.bat
Könnte glaube ich daran liegen... |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 18.07.2005, 10:12 Titel: |
|
|
Wenn du von QB ein unkompiliertes Programm, d.h. eine .BAS-Datei, aufrufst, liegt der aktive Pfad immer in dem
Verzeichnis, wo auch QB.EXE liegt.
Das heißt, CD gibt standardmäßig den Pfad von QB.EXE aus.
Wenn du dein Programm kompiliert hast, musst du die .EXE-Datei im selben Verzeichnis wie die Batchdateien ablegen.
WICHTIG: Wenn du diese von DOS aus aufrufst, liegt der aktive Pfad immer noch im Verzeichnis von DOS;
ein CD bringt dann nichts.
In der QBASIC-MonsterFAQ gibt es ein Programm mit einer Funktion namens exepath$.
Diese Funktion zeigt den richtigen Pfad an.
exepath$ funktioniert aber erst nach der Kompilation zur .EXE (wie der Name schon sagt).
Ansonsten mit korrekten Pfadangaben arbeiten.
D.h. anstelle von
exe1.exe
besser
c:\test\exe1.exe
Dabei auch die 8+3 - Regelung beachten.
jb
Zuletzt bearbeitet von jb am 18.07.2005, 10:16, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Nash
Anmeldungsdatum: 18.07.2005 Beiträge: 6
|
Verfasst am: 18.07.2005, 10:15 Titel: |
|
|
Das QBasic Menü ist als exe-file im Arbeitsverzeichniss, in dem sich auch die Batchfiles befinden. Die Batchfiles werden ja ausgeführt, nur wie oben beschrieben nur unvollständig.
8+3 ist korrekt. Aber ich ändere mal die Pfade. Glaub aber nicht, das es daran liegt. |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 18.07.2005, 10:18 Titel: |
|
|
Und wie startest du das?
Unter DOS via
Wenn das der Fall ist, siehe oben, da hab ich's schon geschrieben.
Starte die .EXE dann doch mal mit einem simplen Doppelklick unter WINDOWS.
jb |
|
Nach oben |
|
 |
Nash
Anmeldungsdatum: 18.07.2005 Beiträge: 6
|
Verfasst am: 18.07.2005, 10:43 Titel: |
|
|
Vielleicht gehe ich das Problem mal andersherum an. Das Problem lässt sich ja evtl auch anders lösen.
Was ich will, ist ein Menü in dem ich mich zwischen 3 verschiedene Installationsvarianten entscheiden kann. Die Installation besteht aus:
1. dem Löschen alter Verzeichnisse
2. dem erstellen neuer Verzeichnisse
3. dem Kopieren von Dateien in diese Verzeichnisse
4. dem Kopieren von Dateien auf den Desktop
5. dem anschließenden Ausführen zweier Exe-Dateien
Da ich nicht weiss, wie/ob ich die Installation auch komplett mit QBasic vornehmen kann, hab ich Batch-dateien benutzt. Ich benutze Lange Dateinamen in "" in der Batchdatei, da diese sonst nicht funktioniert.
Vielleicht ist es leichter, wenn ihr einen anderen Lösungsweg vorschlagt.
Ansonsten werde ich die Pfade bei der bestehenden Datei nochmal ändern und kucken ob das was bringt. |
|
Nach oben |
|
 |
Nash
Anmeldungsdatum: 18.07.2005 Beiträge: 6
|
Verfasst am: 18.07.2005, 10:46 Titel: |
|
|
Kann ich die Batch dateien auch anders aus meinem Programm aufrufen als mit dem SHELL befehl? Vielleicht liegts ja daran. |
|
Nach oben |
|
 |
Charly2
Anmeldungsdatum: 28.11.2004 Beiträge: 29 Wohnort: Mittelfranken
|
Verfasst am: 18.07.2005, 12:29 Titel: |
|
|
Hallo,
beim Shell-Befehl in QBasic wird die Batch-Datei mit Command.com abgearbeitet, während beim Aufruf unter Windows CMD.EXE verwendet wird.
Command.com kennt keine langen Dateinamen, vielleicht liegt hier
das Problem.
Probier mal den Shell-Befehl wie folgt abzuändern:
SHELL "CMD /C abc.bat"
anstatt abc.bat setze den Namen deiner Batch-Datei ein.
Mfg
Charly |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 18.07.2005, 12:54 Titel: |
|
|
Also, RMDIR und MKDIR sind feststehende QuickBASIC-Befehle.
Für CD habe ich oben schon einen Link zur MonsterFAQ gegeben.
Zum Löschen der Dateien nimmst du den Befehl KILL; wenn du alle Dateien in einem Verzeichnis
löschen willst, machst du das z.B: so:
jb |
|
Nach oben |
|
 |
Nash
Anmeldungsdatum: 18.07.2005 Beiträge: 6
|
Verfasst am: 18.07.2005, 14:09 Titel: |
|
|
Mit SHELL "CMD /C abc.bat" klappts!
Das Problem war wohl wirklich mit der Command.com. Erscheint mir auch logisch. Jetzt läuft alles super.
Vielen Dank für die schnelle Hilfe!  |
|
Nach oben |
|
 |
|