software:diy:batch:dos
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
software:diy:batch:dos [11/03/2006 19:03] – ergänzt uxt | software:diy:batch:dos [06/04/2007 21:04] – Typos... rmeissner | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Batchen am nackten Pofo ====== | ||
- | Ohne jegliche Zusatzsoftware lassen sich kleine " | ||
- | * [[hilfe: | ||
- | * [[hilfe: | ||
- | |||
- | ===== Mehr zum Befehl IF ===== | ||
- | Im Handbuch wird beschrieben wie man mit dem IF Befehl prüft ob eine Datei existiert, nicht aber wie man prüft ob | ||
- | überhaupt ein Dateiname als Pararmeter übergeben wurde. | ||
- | IF %1== GOTO ENDE | ||
- | funktioinert leider nicht, IF hält ENDE für den Befehl der ausgeführt werden soll falls das Wort GOTO als Parameter | ||
- | übergeben wurde. Es ist leider nicht möglich einen Parameter mit einer Leerstelle zu vergleichen. Es gibt auch | ||
- | kein Symbol, daß der Befehl IF als " | ||
- | Glücklicherweise erlaubt es IF die Bedingungen als " | ||
- | " | ||
- | nehmen wir den " | ||
- | IF %1.==. GOTO ENDE | ||
- | Wurde kein Parameter übergeben verzweigt die Batchdatei zur Sprungmarke ENDE.\\ | ||
- | Das selbe gilt für Umgebungsvariablen: | ||
- | IF %Name%.==. GOTO NONAME | ||
- | Falls die Umgebungsvariable " | ||
- | Sprungmarke NONAME. | ||
- | |||
- | ===== Der Parameter %0 ===== | ||
- | In Portfolios Handbuch werden die Kommandozeilen Parameter in Batch-Dateien auf den Seiten 46 und 47 beschrieben. Der Parameter %0 ist der Name der aufgerufenen Datei selbst. Beim Portfolio gibt es da aber ein Detail. | ||
- | Zum Beispiel die Zeile\\ | ||
- | echo %0 %1 %2 | ||
- | gibt den Namen der aufgerufenen Datei (%0) und die übergebenen Parameter %1 und %2 am Bildschirm aus. | ||
- | Wird diese Datei (nennen wir sie ZEIG.BAT) folgendermaßen aufgerufen: | ||
- | ZEIG EINS ZWEI | ||
- | wird auf dem Bildschirm folgendes ausgegeben: | ||
- | ZEIG EINS ZWEI | ||
- | Wird die Datei aber mit der Erweiterung " | ||
- | ZEIG.BAT EINS ZWEI | ||
- | wird der Portfolio | ||
- | ZEIG .BAT EINS | ||
- | anzeigen.\\ | ||
- | \\ | ||
- | Wärend ein PC den Dateinamen mit Erweiterung als Ganzes interpretiert trennt der Portfolio zwischen Datei und Erweiterung. Somit ist die Erweiterung zum Parameter %1=" | ||
- | <code dos> | ||
- | @echo off | ||
- | if not %1==.bat goto weiter | ||
- | set par0=%0%1 | ||
- | shift | ||
- | echo %par0% %1 %2 %3 | ||
- | goto ende | ||
- | :weiter | ||
- | echo %0 %1 %2 %3 | ||
- | :ende | ||
- | set par0= | ||
- | </ | ||
- | Nennen wir die Datei ZEIGPARM.BAT\\ | ||
- | Rufen wir die Datei ganz normal ohne Erweiterung auf, also | ||
- | ZEIGPARM EINS ZWEI DREI | ||
- | so erhalten wir die Ausgabe | ||
- | ZEIGPARM EINS ZWEI DREI | ||
- | Rufen wir die Datei mit der Erweiterung " | ||
- | ZEIGPARM.BAT EINS ZWEI DREI | ||
- | bekommen wir auch die entsprechende Ausgabe: | ||
- | ZEIGPARM.BAT EINS ZWEI DREI | ||
- | und kein Parameter geht verloren. | ||
- | \\ | ||
- | |||
- | ===== ECHO mit Grafikzeichen ===== | ||
- | Nur weil man in einer Batch-Datei ist muß man nicht auf eine etwas ansprechendere Bildschirmausgabe verzichten. Auch der Befehl ECHO kann so Manches ausgeben wenn man es ihm entsprechend übergibt. Wenn NUMLOCK eingaschaltet ist kann man ASCII-Codes als dreistellige Zahl eingeben. So kann man mit ECHO Grafikzeichen verwenden. | ||
- | Beispiel:\\ | ||
- | Beginnen sie eine Batch-Datei wie gewöhnlich im Text-editor zu tippen: | ||
- | @echo off | ||
- | echo | ||
- | Nach dem zweiten ECHO kommt eine Leerstelle. Schalten sie nun NUMLOCK ein (< | ||
- | Die Batch-Datei müßte nun so aussehen: | ||
- | <code dos> | ||
- | @echo off | ||
- | echo ▓▒░ | ||
- | </ | ||
- | Nun schalten sie NUMLOCK wieder aus: < | ||
- | <code dos> | ||
- | @echo off | ||
- | echo ▓▒░TEST | ||
- | </ | ||
- | Um nicht wieder NUMLOCK einschalten und die ASCII-Codes einzeln eingeben zu müssen verwenden sie das Klemmbrett um die Grafik-Zeichen in umgekehrter Reihenfolge an das Ende der Zeile anzuhängen. Dann ist die Zeile vollständig: | ||
- | <code dos> | ||
- | @echo off | ||
- | echo ▓▒░TEST░▒▓ | ||
- | </ | ||
- | Auf diese Art kann man die unterschiedlichsten Zeichen ausgeben, so z.B. auch AES-Fenster auf den Bildschirm bringen: | ||
- | <code dos> | ||
- | @echo off | ||
- | cls | ||
- | echo ╔════════════╗ | ||
- | echo ║ Hallo Welt.║ | ||
- | echo ╚════════════╝ | ||
- | pause >nul | ||
- | cls | ||
- | </ | ||
- | Dies sind die entsprechenden ASCII-Werte: | ||
- | ^^Symbol^ASCII^ | ||
- | |╔|201| | ||
- | |═|205| | ||
- | |╗|187| | ||
- | |║|186| | ||
- | |╚|200| | ||
- | |╝|188| | ||
- | |||
- | So kann man alle ASCII-Werte zwischen 32 und 255 eingeben. Wer diese Dinge häufiger tut wird sich eine Datei anlegen in der die Symbole bereits enthalten sind um nicht ständig die ASCII-Werte im NUMLOCK eingeben zu müssen. Da ist das Klemmbrett schon komfortabler. | ||
- | Bei den Werten unter 32 wird es problematisch, | ||
- | ^^ASCII^Funktion^ASCII^Funktion^ | ||
- | |000|-|016|-| | ||
- | |001|Cursor springt auf POS1|017|-| | ||
- | |002|Löscht rückwärts bis Zeilenanfang|018|Text-Editor: | ||
- | |003|-|019|Text-Editor: | ||
- | |004|-|020|-| | ||
- | |005|Löscht bis Zeilenende|021|-| | ||
- | |006|-|022|-| | ||
- | |007|Text-Editor: | ||
- | |008|Korrekturtaste, | ||
- | |009|TAB|025|-| | ||
- | |010|-|026|Springt zum Ende| | ||
- | |011|-|027|Esc| | ||
- | |012|Löscht gesmate Zeile|028|-| | ||
- | |013|Zeilenumbruch|029|-| | ||
- | |014|-|030|-| | ||
- | |015|-|031|-| | ||
- | |||
- | ===== Das Prompt ===== | ||
- | |||
- | Ähnlich wie beim ECHO-Befehl (siehe oben) lassen sich ich beim PROMPT-Befehl die skurrilsten Eingabeaufforderungen gestalten: | ||
- | ^^PROMPT^ASCII-Werte | ||
- | |||
- | ===== Platzhalter (Wildcards) ===== | ||
- | Es gibt Programme die keine Platzhalter (* und ?) in Dateinamen bzw. keine Dateimasken akzeptieren. Hier schafft folgende Batch-Datei abhilfe (MASKE.BAT): | ||
- | <code dos> | ||
- | @echo off | ||
- | if %1==/? goto HILFE | ||
- | if %1==. goto HILFE | ||
- | if %2==. goto HILFE | ||
- | @for %%a in (%2) do %1 %%a %3 | ||
- | goto ENDE | ||
- | :HILFE | ||
- | echo MASKE.BAT ermöglicht es Platzhalter | ||
- | echo auch bei Programmen anzuwenden die | ||
- | echo diese nicht unterstützen: | ||
- | echo Syntax: MASKE [Programm [Dateimaske][/? | ||
- | pause >nul | ||
- | :ENDE | ||
- | </ | ||
- | |||
- | ===== Ein Menü ===== | ||
- | Hier ein Beispiel wie man sich ein kleines Menü zurecht-batchen kann wenn man keinerlei Software hat. Wird die Batch-Datei gestartet so erzeugt sie weitere 6 kleine Batch-Dateien, | ||
- | <code dos> | ||
- | @echo off | ||
- | if not %menop%==quit goto start | ||
- | del ?.bat | ||
- | set prompt=%prmpt% | ||
- | set prmpt= | ||
- | set menop= | ||
- | goto cmdlin | ||
- | :start | ||
- | set prmpt=%prompt% | ||
- | cls | ||
- | if exist 1.bat goto menu | ||
- | if exist 6.bat del 6.bat | ||
- | echo wait 6 | ||
- | echo @echo off >1.bat | ||
- | echo app /e >> | ||
- | echo menu.bat >> | ||
- | cls | ||
- | echo wait 5 | ||
- | echo @echo off >2.bat | ||
- | echo app /w >> | ||
- | echo menu.bat >> | ||
- | cls | ||
- | echo wait 4 | ||
- | echo @echo off >3.bat | ||
- | echo app /a >> | ||
- | echo menu.bat >> | ||
- | cls | ||
- | echo wait 3 | ||
- | echo @echo off >4.bat | ||
- | echo app /d >> | ||
- | echo menu.bat >> | ||
- | cls | ||
- | echo wait 2 | ||
- | echo @echo off >5.bat | ||
- | echo app /c >> | ||
- | echo menu.bat >> | ||
- | cls | ||
- | echo wait 1 | ||
- | echo @echo off >6.bat | ||
- | echo set menop=quit >> | ||
- | echo menu.bat >> | ||
- | cls | ||
- | :menu | ||
- | echo ╔═══ MENU ════════════════════════════╗ | ||
- | echo ║ 1. Text-editor | ||
- | echo ║ 2. Worksheet | ||
- | echo ║ 3. Address-book | ||
- | echo ╚═════════════════════════════════════╝ | ||
- | prompt=your choice: | ||
- | :cmdlin | ||
- | </ |
software/diy/batch/dos.txt · Zuletzt geändert: 16/01/2023 15:01 von kilo