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
Last revisionBoth sides next revision
os:windows:batch [2011-02-09 12:12] – windows:batch renamed to os:windows:batch rootos:windows:batch [2014-12-18 20:08] – external edit 127.0.0.1
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 1.2.3.4 >nul 2>&
 +goto:eof 
 +</code>
  
-Skelett:+**Anwendung:** 
 +<code> 
 +call:sleep 5 
 +</code>
  
-  @echo off +=== counter === 
-   + 
-  call :function1 +**Beschreibung**:\\ \\ 
-  call :function2 argument1 argument2 +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. 
-  goto:eof + 
-   +**Funktion:** 
-   +<code> 
-  :function1 +goto:eof 
-   +:Counter 
-  goto:eof +set /a counter=%counter% + %1 
-   +goto:eof 
-   +</code> 
-  :function2 + 
-   +**Anwendung:** 
-  goto:eof+<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.txt · Last modified: 2016-05-25 08:54 by root