So übergeben Sie einen Dateinamen als Argument in einem .BAT-Dateiaufruf

873
Kaji

Ich habe in letzter Zeit ein bisschen mit DOSbox herumgespielt, und eine besondere Aufgabe, die ich gemacht habe, ist das Einrichten einer Reihe von Batch-Dateien zum Aufrufen von Dingen, damit ich ein paar cds speichern kann . Eine typische .bat-Datei könnte folgendermaßen aussehen:

cd wolf3d wolf3d -goobers cd .. 

Etwas nervig geworden ist das Fehlen eines eingebauten Texteditors, den ich verwenden kann, beispielsweise Pico / Nano. Das heißt, ich tun haben QBASIC installiert, so dass eine Option, die ich erwäge aufstellte, so konnte ich einen Anruf tun wie die folgenden:

nano filename.bat 

und es würde die Datei in QBASIC öffnen.

Ich habe ein wenig über die Funktionsweise von Batch- %1Skripten gelesen und es scheint so, als würde das Hinzufügen eines Skripts zum Skript ausreichen.

cd qbasic qbasic %1 cd .. 

Was jedoch am Ende passiert, ist, wenn ich nano nano.batdie Batch-Datei bearbeite, wenn ich sie eingebe, so öffnet sie nano.batstattdessen eine neue, leere Datei.

Ich habe versucht nachzuschlagen, was mir hier fehlt, aber es scheint ein bisschen zu geheimnisvoll zu sein, um es leicht finden zu können. Kann jemand darauf hinweisen, was hier fehlt?

Vielen Dank!

0
[DOS und Windows cmd sind nicht dasselbe] (https://superuser.com/q/451432/241386). Daher sind die vielen Dinge auch anders https://scalibq.wordpress.com/2012/05/23/the-windows-command-prompt-is-not-a-dos-prompt/ phuclv vor 7 Jahren 0
Wenn Sie das aktuelle Verzeichnis im Stapel ändern, müssen Sie Laufwerk: \ Pfad \ Name.ext als Argument angeben. Andernfalls kann Qbasic die Datei nicht finden und erstellt eine neue im aktuellen Ordner LotPings vor 7 Jahren 1
@LotPings Beim Aufruf habe ich den Pfad relativ zum Skript verwendet. Ich habe festgestellt, dass die Datei zwar einen `cd` enthält, der Pfad jedoch beim Abrufen des anfänglichen Variablenwerts immer noch den richtigen Pfad einfängt. Ich schätze, Sie schlagen so etwas wie qbasic .. \% 1 für die zweite Zeile vor? Ich bin nicht in der Lage, das in diesem Moment zu testen, aber sobald ich wieder an meinem Schreibtisch bin, versuche ich es. Es macht auf jeden Fall sehr viel Sinn, jetzt, wo Sie es darauf hinweisen. Kaji vor 7 Jahren 0
@LotPings Das hat es geschafft! Könnten Sie Ihren Kommentar bitte als Antwort erneut veröffentlichen, akzeptiere ich ihn. Kaji vor 7 Jahren 0

2 Antworten auf die Frage

1
LotPings

Um etwas mehr als in meinem Kommentar zu erarbeiten:

  • Wenn ein relativer Pfad als Argument an einen Stapel übergeben wird, der sich selbst ändert, schlägt der aktuelle Ordner fehl, wenn der Durchlauf nicht relativ zum neuen Ordner ist.
  • Alternativ absolvieren Sie einen absoluten Pass
  • oder ändern Sie den aktuellen Ordner nicht, wenn dies nicht unbedingt erforderlich ist. Qbasic ist eine eigenständige .exeDatei, die irgendwo über den Pfad erreichbar ist. Um es als Editor zu verwenden, gibt es eine /EditorOption (nur in VDOS Plus - ein DosBOX-Derivat) angekreuzt.

Ändern Sie also Ihre nano.bat in

@Qbasic.exe /Editor %1 

vorausgesetzt, Qbasic.exe ist über einen Ordner im Pfad erreichbar.

0
AlwaysLearning

Versuchen Sie es mit Doppelprozenten, dh %% 1. Batch-Dateien in DOS folgen nicht ganz den gleichen Regeln für Parameter wie ihre Dosierungsschalenäquivalente.

Am Ende wurde eine leere "% 1.BAS" -Datei in QBASIC geöffnet. Ich habe versucht, es auf nur% 1 zu reduzieren, und diesmal produzierte `NANO.BAT` diesmal. Es handelt sich jedoch um eine neue leere Datei anstelle der Datei, die wir aktualisieren möchten. `qbasic ../ nano.bat` öffnet die Datei jedoch richtig, wenn ich zuerst in` / qbasic` gehen möchte. Kaji vor 7 Jahren 0
Komisch, dass es eine Datei namens nano.bas öffnet. Ich frage mich, ob% 1 in der Dosierungsbox nicht das erste Argument des Batch-Jobs ist, sondern der Name des Batch-Jobs. Was passiert, wenn Sie% 2 verwenden? AlwaysLearning vor 7 Jahren 0
Leichte Korrektur, es entsteht ein leeres `nano.baT`, nicht` .baS`; Mein Fehler in der Eröffnungspost. Wenn Sie die Einstellung in "% 2" ändern, wird keine Datei erstellt, wie bei einem einfachen Start von "qbasic". Kaji vor 7 Jahren 0