User Tools

Site Tools


os:windows:batch

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
os:windows:batch [2011-02-09 12:12] – windows:batch renamed to os:windows:batch rootos:windows:batch [2016-05-25 08:54] (current) root
Line 1: Line 1:
 ====== Batch ====== ====== Batch ======
  
-===== Pseudo-Funktion =====+===== Pseudo-Funktionen =====
  
 +==== Aufbau ====
  
 Mit Batch lässt sich eine primitive Form einer Funktion nachstellen. Dies sieht wie folgt aus: Mit Batch lässt sich eine primitive Form einer Funktion nachstellen. Dies sieht wie folgt aus:
Line 23: Line 24:
  
 Der Ablauf: Der Ablauf:
-  call wird ausgeführt, zu Sprungpunkt :r +  call wird ausgeführt, zu Sprungpunkt :r 
-  :r liest wert von Tastatur ein uns speichert ihn in in die Variable "read"+  :r liest wert von Tastatur ein uns speichert ihn in in die Variable "read"
-  :r wird beendet mit goto:eof+  :r wird beendet mit goto:eof 
 +  - call wird ausgeführt, zu Sprungpunkt :p, übergeben wird die Variable read 
 +  - das erste Argument, welche dem Sprungpunkt über die Call-Funktion mitgegeben wird, wird ausgegeben 
 +  - :p wird beendet mit goto:eof 
 +  - pause wird ausgeführt 
 +  - batch-file wird beendet 
 +   
 +==== Beispiele ====
  
-  * call wird ausgeführt, zu Sprungpunkt :p, übergeben wird die Variable read +=== sleep ===
-  * das erste Argument, welche dem Sprungpunkt über die Call-Funktion mitgegeben wird, wird ausgegeben +
-  * :p wird beendet mit goto:eof+
  
-  pause wird ausgeführt+**Beschreibung**:\\ \\ 
 +Mit sleep wird im Script eine Pause angelegt. Als Parameter wird eine Zahl benötigt, welche der Dauer der Pause entspricht.
  
-  batch-file wird beendet+**Funktion:** 
 +<code> 
 +goto:eof 
 +:sleep 
 +ping -n 1 -w %1000 192.0.2.0 >nul 2>&
 +goto:eof 
 +</code>
  
-Skelett:+**Anwendung:** 
 +<code> 
 +call:sleep 5 
 +</code>
  
-  @echo off +IP-Adressse: [[https://tools.ietf.org/html/rfc5737|RFC5737]] 
-   + 
-  call :function1 +=== counter === 
-  call :function2 argument1 argument2 + 
-  goto:eof +**Beschreibung**:\\ \\ 
-   +Will man innerhalb einer for-Schleife Zahlen zusammen Zählen, ist dies nur über eine Funktion möglich, da die Veränderung der Variable nur innerhalb der Schleife übernommen wird. 
-   + 
-  :function1 +**Funktion:** 
-   +<code> 
-  goto:eof +goto:eof 
-   +:Counter 
-   +set /a counter=%counter% + %1 
-  :function2 +goto:eof 
-   +</code> 
-  goto:eof+ 
 +**Anwendung:** 
 +<code> 
 +set counter=0 
 +for /l %%a in (1,1,5) do call:Counter %%a 
 + 
 +echo.%counter% 
 +</code> 
 + 
 +=== GetFolderSize === 
 + 
 +**Beschreibung**:\\ \\ 
 +Mit hauseigenen Tools lässt sich die Grösse eines Folder mit cmd.exe nicht ermitteln, es muss auf externe Tools zurückgegriffen werden, wie z.B. du.exe (Sysinternals), VBS, PowerShell. In der Beispiel-Funktion wird PowerShell verwendet. 
 + 
 +**Funktion:** 
 +<code> 
 +goto:eof 
 +:GetFolderSize 
 +powershell "\"{0:N0}\" -f ((Get-ChildItem -Recurse -Force %1 | Measure-Object -Property Length -Sum).Sum / 1MB)" 
 +goto:eof 
 +</code> 
 + 
 +**Anwendung:** 
 +<code> 
 +call:GetFolderSize C:\Windows\Temp 
 +</code> 
 + 
 +=== ExecPSQL === 
 + 
 +**Beschreibung**:\\ \\ 
 +Werden in einem Batch-File Daten aus einer PostgreSQL-Datenbank benötigt, kann der Funktion ExecPSQL das gewünschte Statement übergeben werden und diese liefert den Wert zurück. 
 + 
 +**Funktion:** 
 +<code> 
 +goto:eof 
 +:ExecPSQL 
 +psql -h %SRV% -p %PRT% -U %USR% -d %DB% -A -t -c %1 
 +goto:eof 
 +</code> 
 + 
 +**Anwendung:** 
 +Vor dem Aufruf der Funktion müssen die Benötigten Variablen der DB gesetzt werden. Zudem wird die Path-Variable um den Pfad zum psql-Binary ergänzt (für x86 und AMD64). 
 + 
 +<code> 
 +set SRV=localhost 
 +set PRT=5432 
 +set USR=DBUser 
 +set PW=DBPassword 
 +set DB=DBName 
 +set PGPASSWORD=%PW% 
 + 
 +where psql.exe >nul 2>&1 || set PATH=%PATH%;C:\Program Files (x86)\PostgreSQL\bin;C:\Program Files\PostgreSQL\bin 
 + 
 +call:ExecPSQL "SELECT COUNT(procpid) FROM pg_stat_activity" 
 +</code> 
 + 
 +===== Tipps ===== 
 + 
 +== Zugriff auf externe Tools == 
 +Wird in einem Batch-File ein externes Tool verwendet, muss dieses - sofern nicht über die PATH-Variable erreichbar - über den direkten Pfad aufgerufen werden. 
 +Es gibt verschiedene Gründe, warum das Anpassen der PATH-Variable bevorzugt werden sollte.32-Bit-Software, welche sich in das ProgramFiles-Verzeichnis installiert, liegt bei 32-Bit-Systemen unter //C:\Program Files// und bei 64-Bit-Systemen unter //C:\Program Files (x86)//. Fügt man nun beide Pfade - auch wenn das eine Verzeichnis existiert - der Variable hinzu, entfällt das Auswerten der OS-Architektur. 
 + 
 +wzzip.exe (WinZIP CLI): 
 +<code> 
 +where wzzip.exe >nul 2>&1 || set PATH=%PATH%;C:\Program Files (x86)\Winzip;C:\Program Files\Winzip 
 +</code> 
 + 
 +pg_dump.exe (PostgreSQL Dump): 
 +<code> 
 +where pg_dump.exe >nul 2>&1 || set PATH=%PATH%;C:\Program Files (x86)\PostgreSQL\bin;C:\Program Files\PostgreSQL\bin 
 +</code> 
 + 
 +== NAS Netzlaufwerk Sortierung mit dir == 
 +Wird ein Share eines NAS, wie zum Beispiel Q-NAP TS-210 als Netzlaufwerk gemappt, bemerkt man schnell, dass beim Ausführen von //dir// eine willkürliche Sortierung verwendet wird: 
 + 
 +<code> 
 +M:\Betontod\Schwarzes Blut>dir 
 + Volume in drive M is MP3 
 + Volume Serial Number is BD65-0021 
 + 
 + Directory of M:\Betontod\Schwarzes Blut 
 + 
 +09.12.2009  14:49    <DIR>          . 
 +01.03.2010  21:42    <DIR>          .. 
 +21.03.2010  12:26         3'644'186 09-Betontod - Vielleicht wird alles gut.mp3 
 +21.03.2010  12:26         4'108'174 10-Betontod - Viva Punk!.mp3 
 +21.03.2010  12:26         3'797'211 11-Betontod - Wind.mp3 
 +21.03.2010  12:26         3'773'773 01-Betontod - Generation X.mp3 
 +21.03.2010  12:26         6'164'432 07-Betontod - Kinder des Zorns.mp3 
 +21.03.2010  12:26         2'546'439 08-Betontod - Im Sumpf des Verbrechens.mp3 
 +21.03.2010  12:26         3'080'891 02-Betontod - Schwarzes Blut.mp3 
 +21.03.2010  12:26         2'944'279 12-Betontod - All die Jahre.mp3 
 +21.03.2010  12:26         3'870'026 06-Betontod - Glück auf.mp3 
 +21.03.2010  12:26         3'132'548 05-Betontod - Zweifel.mp3 
 +21.03.2010  12:26         3'229'667 03-Betontod - Feuer Frei!.mp3 
 +21.03.2010  12:26         2'936'122 04-Betontod - Stillstand.mp3 
 +              12 File(s)     43'227'748 bytes 
 +               2 Dir(s)  174'093'758'464 bytes free 
 +</code> 
 + 
 +Mit dem Parameter ///o// wird eine Sortierung erzwungen. Will man jedoch nicht bei jedem dir-Command diesen Parameter anhängen, kann man diesen in der dircmd-Variable definieren: 
 + 
 +  set dircmd=/o 
 + 
 +In folgendem Beispiel wird nochmals der Befehl //dir// ausgeführt, jedoch mit der zuvor definierten dircmd-Variable: 
 + 
 +<code> 
 +M:\Betontod\Schwarzes Blut>dir 
 + Volume in drive M is MP3 
 + Volume Serial Number is BD65-0021 
 + 
 + Directory of M:\Betontod\Schwarzes Blut 
 + 
 +09.12.2009  14:49    <DIR>          . 
 +01.03.2010  21:42    <DIR>          .. 
 +21.03.2010  12:26         3'773'773 01-Betontod - Generation X.mp3 
 +21.03.2010  12:26         3'080'891 02-Betontod - Schwarzes Blut.mp3 
 +21.03.2010  12:26         3'229'667 03-Betontod - Feuer Frei!.mp3 
 +21.03.2010  12:26         2'936'122 04-Betontod - Stillstand.mp3 
 +21.03.2010  12:26         3'132'548 05-Betontod - Zweifel.mp3 
 +21.03.2010  12:26         3'870'026 06-Betontod - Glück auf.mp3 
 +21.03.2010  12:26         6'164'432 07-Betontod - Kinder des Zorns.mp3 
 +21.03.2010  12:26         2'546'439 08-Betontod - Im Sumpf des Verbrechens.mp3 
 +21.03.2010  12:26         3'644'186 09-Betontod - Vielleicht wird alles gut.mp3 
 +21.03.2010  12:26         4'108'174 10-Betontod - Viva Punk!.mp3 
 +21.03.2010  12:26         3'797'211 11-Betontod - Wind.mp3 
 +21.03.2010  12:26         2'944'279 12-Betontod - All die Jahre.mp3 
 +              12 File(s)     43'227'748 bytes 
 +               2 Dir(s)  174'093'758'464 bytes free 
 +</code>
  
 ===== Links ===== ===== Links =====
   * [[http://de.wikibooks.org/wiki/Batch-Programmierung:_Beispiele]]   * [[http://de.wikibooks.org/wiki/Batch-Programmierung:_Beispiele]]
os/windows/batch.1297249932.txt.gz · Last modified: 2014-12-18 20:10 (external edit)