Spezielle Kommandozeile für bat-Datei (suche Exe in einem Ordner)

Thaxll'ssillyia

Captain
Registriert
Dez. 2007
Beiträge
3.569
Hallo Community!

Ich besitze viele FSX-Addons (über 200 Stück) und wollte die Installation vereinfachen.

Diese Dateien liegen jede in einer .rar oder .zip-Datei.

Hier die Anweisung in meiner bat-Datei für eins dieser Addons:

Code:
D:\Programme\7-Zip\7z e -otemp "A300-600 ST - Beluga.zip"
cd temp
"Airbus A300-600 Beluga kein VC Setup.exe" /S /v/qn
cd ..

"e" ist das Commando für Extrahieren, -o fragt nach dem Pfad (in dem Fall auf einen Temp-ordner direkt neben der .bat).
Dann führt die .bat die .exe im Silent-Mode aus und wechselt anschließend wieder zum Addonverzeichnis.

Mein Problem: Da das Addon "A300-600 ST - Beluga.zip" heißt, die beinhaltete .exe aber "Airbus A300-600 Beluga kein VC Setup.exe", müsste ich für jede der Addons noch den enthaltenen .exe-Namen eingeben. Geht es einfacher?

mit *.exe geht es nicht, vermutlich deswegen, weil der Name Leerzeichen enthält.

Vielen Dank für Hilfe!

Gruß Thax
 
"*setup.exe" in "" setzen, evtl sind noch mehr exen in dem Verzeichnis, deshalb wird es ignoriert, es kann auch sein, das die langen Dateinamen nicht unterstützt werden von der Batchdatei und eine ~ an den Namen gehängt wird (Ordnername oder so : Airbus~1)

(in dem Fall auf einen Temp-ordner direkt neben der .bat)
Und der soll wo sein, neben der .bat? Ein Tempordner kann nur im Benutzerverzeichnis oder in Windows sein, sonst fehlt ja wohl auch der Pfad wo der Ordner sich befindet, Beispiel C : \windows\temp oder Du hast einen selbst erstellt, D : \temp.
 
Zuletzt bearbeitet:
evtl sind noch mehr exen in dem Verzeichnis, deshalb wird es ignoriert,

ausgeschlossen, es befindet sich genau eine Exe im Verzeichnis.

Und der soll wo sein, neben der .bat? Ein Tempordner kann nur im Benutzerverzeichnis oder in Windows sein, sonst fehlt ja wohl auch der Pfad wo der Ordner sich befindet, Beispiel C : \windows\temp oder Du hast einen selbst erstellt, D : \temp.

Also, die bat liegt direkt neben den ganzen Addons, und die temp liegt auch daneben (entweder am Anfang mit der bat erstellt oder vorher manuell). Der Ordner heißt nur Temp und wird am Ende gelöscht.


Er kommt auch mit "*Setup.exe" nicht klar (siehe Anhang), ich vermute die Leerzeichen in der exe stören ihn.
 

Anhänge

  • Unbenannt.PNG
    Unbenannt.PNG
    19,2 KB · Aufrufe: 218
Der Ordner Temp ist eine bestehende Variable in Windows und kann nicht so ohne weiteres geändert werden, da kann die "*.bat" ruhig daneben liegen, es ist ein vorgegebener Ordner den Windows benutzt. Versuch es mal mit einer anderen Ordnerbezeichnung, evtl "Test"
Es kann auch sein, da *.bat ein Dosbefehl ist, kann die Datei die gestartet werden soll, nicht ausgeführt werden, weil sie nur unter Windows (setup.exe) läuft, dann musst Du zum ausführen andere Parameter benutzen. Kann Dir nicht sagen welche, da ich nicht der Programmierexperte bin. Kannst es auch versuchen den Pfad erst zu laden und dann die Datei ausführen, mittels cd.
cd temp
ist ja nicht der komplette Pfad und deshalb wird wohl der Pfad benutzt, der in den Umgebungsvariablen gesetzt ist. Bei XP kannst Du das nachsehen, siehe Bild.
 

Anhänge

  • Tempvariablen.png
    Tempvariablen.png
    22 KB · Aufrufe: 185
Der Ordner Temp ist eine bestehende Variable in Windows und kann nicht so ohne weiteres geändert werden, da kann die "*.bat" ruhig daneben liegen, es ist ein vorgegebener Ordner den Windows benutzt. Versuch es mal mit einer anderen Ordnerbezeichnung, evtl "Test"

Hab jetzt statt "Temp" Temp1" genommen.
Vielleicht verstehen wir uns falsch, aber mein Problem ist einfach nur, dass, wenn ich den Befehl "*.exe" (oder einfach nur *.exe) nehme, er die Exe im Temp1-Verzeichnis nicht findet.
Ich will nun nicht für jede gepackte Addondatei noch den beinhalteten Setupnamen eintippen, sondern dass er einfach die einzige vorhandene .exe ausführt.

Vielleicht liegt's an den Leerzeichen der Namen vom xxxxx xxx xx Setup.exe.

Hier noch mal der Code:

Code:
md temp1

D:\Programme\7-Zip\7z e -otemp1 "A300-600 ST - Beluga.zip"
cd temp1
"*.exe" /S /v/qn
del "."
cd ..

Gruß Thax
 
Zuletzt bearbeitet:
Nochmal zum mitschreiben, wo erstellst Du den Ordner "Temp1" und warum versuchst Du es nicht mal mit dem kompletten Pfad? Was soll die Eingabeaufforderung mit der "*.exe" machen, sie läuft evtl. nicht unter der CMD-Umgebung so dass erst noch andere Parameter benutzt werden müssen? run oder runas oder noch was Anderes? Startet denn das Programm, wenn du Dich in dem Ordner befindest (cmd >> cd Ordner\temp1), wenn der Name zu lang ist, kannst Du ihn ja mal umbenennen bevor er ausgeführt werden soll,
rename "Airbus A300-600 Beluga kein VC Setup.exe" setup.exe
dann erst den Befehl zum Starten.
Du kannst in dem Verzeichnis auch mal "Dir" oder "List" ausführen um zu sehen wie die Dateien heissen.

Der Befehl "del "."" hat denke ich mal auch keinen Erfolg, wenn dann "del *.*" oder "rd %Pfad%\temp1", rmdir geht auch, ist die lange Version.
 
Nochmal zum mitschreiben, wo erstellst Du den Ordner "Temp1"

Direkt neben die Bat (siehe Anhang1).

und warum versuchst Du es nicht mal mit dem kompletten Pfad?

Die bat sucht schon im richtigen Ordner, dafür hab ich ja vorher "cd temp1" befohlen. Die Liesmich.txt, die neben der Setup.exe im Tempverzeichnis ist, kann er auch finden und aufrufen

Was soll die Eingabeaufforderung mit der "*.exe" machen, sie läuft evtl. nicht unter der CMD-Umgebung so dass erst noch andere Parameter benutzt werden müssen?

*.exe soll die (einzigste) vorhandene Exe im genannten Verzeichnis ausführen. Und das funktioniert grad nicht.
run oder runas oder noch was Anderes?

geht auch nicht.
Startet denn das Programm, wenn du Dich in dem Ordner befindest

Ich befinde mich ja im Ordner, und da startet es auch (über Airbus A300-600 Beluga kein VC Setup.exe, nicht aber über *.exe)

wenn der Name zu lang ist, kannst Du ihn ja mal umbenennen bevor er ausgeführt werden soll,
rename "Airbus A300-600 Beluga kein VC Setup.exe" setup.exe

Klar würde das gehen, nur müsste ich ja trotzdem für jedes Addon den Setup-namen eintippen, damit er dann umbenannt werden kann. Und genau das wollte ich ja nicht.

Du kannst in dem Verzeichnis auch mal "Dir" oder "List" ausführen um zu sehen wie die Dateien heissen.

Habs mal gemacht, siehe Anhang2.

Der Befehl "del "."" hat denke ich mal auch keinen Erfolg, wenn dann "del *.*" oder "rd %Pfad%\temp1", rmdir geht auch, ist die lange Version.

Der Befehl funktioniert einwandfrei und löscht den Inhalt des betreffenden Ordners, in dem Fall der "Temp1".

Vielen Dank für weitere Hilfe!

Gruß Thax

PS: Noch was: Es liegt wahrscheinlich am falschen Befehl (*.exe). Die Liesmich.txt, die neben der exe liegt, kann ich auch nicht per *.txt abrufen.
 

Anhänge

  • Daeti-System.PNG
    Daeti-System.PNG
    91,2 KB · Aufrufe: 167
  • Temp1-Inhalt.PNG
    Temp1-Inhalt.PNG
    16,4 KB · Aufrufe: 168
Zuletzt bearbeitet:
PS: Noch was: Es liegt wahrscheinlich am falschen Befehl (*.exe). Die Liesmich.txt, die neben der exe liegt, kann ich auch nicht per *.txt abrufen.
Das versuche ich Dir die ganze Zeit zu erklären, um die *.txt Datei auszuführen musst Du ein Programm vorher laden an der Eingabeaufforderung, damit diese Datei angezeigt wird.
more %Pfad%\temp1\liesmich.txt
dann wird die Datei auch angezeigt, und da die Datei setup.exe auch wohl eine gepackte Datei ist, fehlt der Eingabeaufforderung wohl der Parameter um die Datei ausführen zu können, da sie nur unter Windows läuft und dem evtl Installer von Windows. Kannst die Setup.exe ja mal mit der Rechten Maus anklicken und nachsehen was es für eine Datei ist, Eigenschaften. Evtl musst Du auch diese Datei erst mit Winrar oder einem ähnlichen Packer entpacken. Wenn Du die Setup unter Windows ausführst, wird ja wohl die Datei erst im Tempordner entpackt und danach erst die im Ordner entpackte Installationsdatei gestartet, diese Routine fehlt an der CMD.
Der Befehl funktioniert einwandfrei und löscht den Inhalt des betreffenden Ordners, in dem Fall der "Temp1".
Ist mir neu, werde es mal testen.

Ich befinde mich ja im Ordner, und da startet es auch (über Airbus A300-600 Beluga kein VC Setup.exe, nicht aber über *.exe)
Nicht unter Windows sondern an der Eingabeaufforderung. Dafür ist wohl die Pfadangabe schon viel zu lang/tief. Versuch es auf der Oberfläche den Ordner anzulegen, also F : \ Temp1, und es dann mal versuchen.

Es liegt nichts neben einer *.bat, es befinden sich Daten im Ordner und den Pfad muss man angeben.
 
Zuletzt bearbeitet:
also *setup.exe oder *.exe usw sowas geht ja schon mal gar nicht.lol
also ich würde sagen, du machst dir einmalig die mühe und benns alle datein in setup.exe um. oder versuchst
was mit script.


z.b.: FIND und DIR die exe suchen . das ergebnis kannse inne variable uebergeben oder als inhalt einer txt datei
mit call %variable% lässt sich dat setup dann starten.

frag mich nu aber nicht wie man den inhalt von dir *.exe in eine variable uebergibt, aber das müsste schon irgendwo zu finden sein.
 
Zuletzt bearbeitet:
Zurück
Oben