Tech-Ecke / DOS Inhalt / Batch-"Programmierung"

 

Batch-"Programmierung" (Batchdatei/Stapelverarbeitungsdateien)

Einige der hier aufgeführten Befehl bzw. Script-Schnipsel sind nur in der Konsole (CMD ) unter Windows lauffähig und somit in der Rubrik DOS eigentlich falsch platziert. Jedoch möchte ich für Diese keine eigene Rubrik eröffnen und habe sie stattdessen mit einem Windows Logo versehen.

Diese Seite beinhaltet:


Anwendung starten ohne zu Warten

Möchte man zwei Anwendungen "gleichzeitig" über eine Batchdatei starten so muss man die Anwendungen mit dem Befehl Start ausführen. Ansonsten startet die Batchdatei zunächst nur die eine Anwendung und wartet bis diese beendet ist bevor die nächste gestartet wird.

  Start "C:\Windows\notepad.exe"
Start "C:\Windows\regedit.exe"
 


 
Ausgabe / Textausgabe

Ausgabe der Befehlsanweisung unterdrücken

  @dir   REM das vorangestellte @ unterdrückt die Ausgabe der Befehlsanweisung für diesen Befehl

@echo off   REM alle Ausgabe ab jetzt unterdrücken
echo.   REM zeigt eine leere Zeile
@echo on   REM Ausgabe wieder einschalten
 

Textausgabe

  echo Hier schreib ich mal was hin   REM einfache Textausgabe
 

Bildschirm löschen

  cls
 

Schriftfarbe und Hintergrund ändern

Color [HintergrundSchriftfarbe] - Es stehen folgende 16 Farben von 1 - F zur Verfügung:

0 Schwarz 1 Dunkelblau 2 Dunkelgrün 3 Blaugrün
4 Dunkelrot 5 Lila 6 Ocker 7 Hellgrau
8 Dunkelgrau 9 Blau A Grün B Zyan
C Rot D Magenta E Gelb F Weiß
               
  color 0A   REM Hintergrund schwarz, Schrift grün
 



 
Countdown Zähler (Sekunden)

Datei/Ordner umbenennen

 
 



  Datei- und Verzeichnisoperationen

 

Datei/Ordner umbenennen

  ren C:\Test.txt C:\Test.txt  REM absolute Pfadangabe

ren Test.txt Neu.txt  REM relative Pfadangabe
 

Aktuelles Verzeichnis ermitteln

  @echo %0 liegt in %~dp0
 

Datei/Ordner umbenennen

  ren C:\Test.txt C:\Test.txt  REM absolute Pfadangabe

ren Test.txt Neu.txt  REM relative Pfadangabe
 

Datei kopieren (Zielordner muss vorhanden sein Ordner )

  copy C:\Test.txt C:\Ordner\Test.txt  REM absolute Pfadangabe

copy Test.txt Ordner\Test.txt  REM relative Pfadangabe

copy C:\Test.txt C:\Ordner\Neu.txt  REM Kopieren mit gleichzeitigem Umbenennen
 

Datei verschieben (Zielordner muss vorhanden sein Ordner )

  move C:\Test.txt C:\Ordner\Test.txt

move C:\Test.txt C:\Ordner\Neu.txt  REM Kopieren mit gleichzeitigem Umbenennen
 

Datei löschen

  del C:\Test.txt
 

Ordner erstellen

  md C:\Ordner
 

Ordner löschen (nur bei leeren Ordner möglich)

  rd C:\Ordner
 

löschen von Ordnern inkl. Inhalt

  deltree C:\Ordner REM nur unter echtem DOS

rd C:\Ordner /s /q  REM so gehts auch unter
 


In Ordner navigieren - relative Pfadangabe

  REM rückwärts gerichtet - springe zuerst einen Ordner zurück
type ..\test.txt

REM oder

REM vorwärts gerichtet  - springe zuerst in den Ordner
type Ordner\test.txt

 


Aktueller Dateipfad ermitteln

  @echo off

REM Variante 1
for /f "tokens=2,*" %%i in ('dir /a:d ') do if "%%i"=="von" set "Pfad=%%j"
echo %Pfad%

REM Variante 2
echo %CD%

REM Variante 3
echo %~dp0%
 


Lokaler Ordner als Laufwerk mappen

  subst L: "C:\Test"

REM Erstellt ein Laufwerl mit dem Buchstaben L mit dem Inhalt vom Ordner C:\Test
 



  Verwenden von Variable

Einer Variable kann beim Deklarieren über den Befehl "Set" gleich ein Wert zugewiesen werden. 

  set Vari=Test
type Ordner\%Vari%.txt
 



  + Alle Dateien in einem Verzeichnis einzeln zippen mit 7z

Mit dieser Batchanweisung werden alle Dateien eines Verzeichnises in separate Zip-Archive gepackt. Dabei wird vorausgesetzt, dass 7z im Standard-Installationsverzeichnis installiert wurde, ansonsten "C:\Programme\7-Zip\7z.exe" entsprechend bitte anpassen.

  for %%X in (*.*) do "C:\Programme\7-Zip\7z.exe" a -t7z -mx=9 -aoa "%%X.7z" "%%X"
 

Möchte man nur einen bestimmten Dateityp behandeln, so ersetzt man (*.*) durch z.B. (*.bmp).
Durch das Ändern in (*) werden statt alle Dateien alle Ordner einzeln gepackt.
Das Attribut -aoa veranlasst das Überschreiben eines eventuell vorhandenen Archivs mit gleichem Namen. 



 
String Operationen

Zeichen in Stringvariable ersetzen

Ersetze "A" durch "B". Das Ergebnis bzw. die Ausgabe wird "TestB" sein.

  set Vari=TestA
set Vari=%Vari:A=B%
echo %Vari%
 

Einer Stringvariable Zeichen anhängen

Füge zu "Te"  "st" hinzu. Das Ergebnis bzw. die Ausgabe wird "Test" sein.

  set Vari=Te
set Vari=%Vari%st
echo %Vari%
 

Stringvariable beschneiden

Die letzten 3 Zeichen abschneiden

  set Vari=Test.txt
set Vari=%Vari:~0,-3%
echo %Vari%
 

Nach den ersten 4 Zeichen abschneiden

  set Vari=Test.txt
set Vari=%Vari:~0,4%
echo %Vari%
 

Nach den ersten 2 Zeichen, 4 Zeichen ausschneiden

  set Vari=Test.txt
set Vari=%Vari:~2,4%
echo %Vari%
 



  Alle Dateinamen eines Dateityps als String auslesen

Alle Textdatein im aktuellen Verzeichnis auslesen.

  @Echo Off
for %%p in (*.txt) do echo %%p
 



  Auswahlmenü

  @Echo Off

:MENUE
cls
echo Bitte waehlen:
echo --------------
echo 1: Option 1
echo 2: Option 2
echo 3: Option 3
echo --------------
echo.

set x=
set /p x="Bitte Zahl eingeben: "

if '%x%' == '1' goto OPT1
if '%x%' == '2' goto OPT2
if '%x%' == '3' goto OPT3

echo Bitte eine Zahl von 1-3 waehlen
goto :MENUE

:OPT1
echo Option 1 wurde gewaehlt
goto :ENDE

:OPT2
echo Option 2 wurde gewaehlt
goto :ENDE

:OPT3
echo Option 3 wurde gewaehlt
goto :ENDE

:ENDE
Pause
 



  Auswahlmenü DOS (läuft nicht unter Windows)

  @Echo Off

cls
echo Bitte waehlen:
echo --------------
echo 1: Option 1
echo 2: Option 2
echo 3: Option 3
echo --------------
echo.

choice /n /c:123 "Bitte Auswahl eingeben: "

if errorlevel 4 goto ENDE
if errorlevel 3 goto OPT3
if errorlevel 2 goto OPT2
if errorlevel 1 goto OPT1

:OPT1
echo Option 1 wurde gewaehlt
goto :ENDE

:OPT2
echo Option 2 wurde gewaehlt
goto :ENDE

:OPT3
echo Option 3 wurde gewaehlt
goto :ENDE

:ENDE
Pause
 
 

Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !

[letzte Aktualisierung 20.12.2015]