os:windows:batch
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
os:windows:batch [2011-02-09 12:12] – windows:batch renamed to os:windows:batch root | os: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, | ||
+ | - 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, | + | === sleep === |
- | * das erste Argument, welche dem Sprungpunkt über die Call-Funktion mitgegeben wird, wird ausgegeben | + | |
- | * :p wird beendet mit goto:eof | + | |
- | | + | **Beschreibung**: |
+ | Mit sleep wird im Script eine Pause angelegt. Als Parameter | ||
- | | + | **Funktion: |
+ | < | ||
+ | goto:eof | ||
+ | :sleep | ||
+ | ping -n 1 -w %1000 192.0.2.0 >nul 2>& | ||
+ | goto:eof | ||
+ | </ | ||
- | Skelett: | + | **Anwendung:** |
+ | < | ||
+ | call:sleep 5 | ||
+ | </ | ||
- | @echo off | + | IP-Adressse: |
- | + | ||
- | | + | === counter === |
- | | + | |
- | | + | **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: |
- | + | < | |
- | | + | goto:eof |
- | + | :Counter | |
- | + | set /a counter=%counter% + %1 | |
- | :function2 | + | goto:eof |
- | + | </ | |
- | | + | |
+ | **Anwendung: | ||
+ | < | ||
+ | set counter=0 | ||
+ | for /l %%a in (1,1,5) do call: | ||
+ | |||
+ | echo.%counter% | ||
+ | </ | ||
+ | |||
+ | === 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), | ||
+ | |||
+ | **Funktion: | ||
+ | < | ||
+ | goto:eof | ||
+ | : | ||
+ | powershell " | ||
+ | goto:eof | ||
+ | </ | ||
+ | |||
+ | **Anwendung: | ||
+ | < | ||
+ | call: | ||
+ | </ | ||
+ | |||
+ | === 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: | ||
+ | < | ||
+ | goto:eof | ||
+ | :ExecPSQL | ||
+ | psql -h %SRV% -p %PRT% -U %USR% -d %DB% -A -t -c %1 | ||
+ | goto:eof | ||
+ | </ | ||
+ | |||
+ | **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). | ||
+ | |||
+ | < | ||
+ | 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%; | ||
+ | |||
+ | call: | ||
+ | </ | ||
+ | |||
+ | ===== 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, | ||
+ | |||
+ | wzzip.exe (WinZIP CLI): | ||
+ | < | ||
+ | where wzzip.exe >nul 2>&1 || set PATH=%PATH%; | ||
+ | </ | ||
+ | |||
+ | pg_dump.exe (PostgreSQL Dump): | ||
+ | < | ||
+ | where pg_dump.exe >nul 2>&1 || set PATH=%PATH%; | ||
+ | </ | ||
+ | |||
+ | == 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: | ||
+ | |||
+ | < | ||
+ | M: | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | 09.12.2009 | ||
+ | 01.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 12 File(s) | ||
+ | 2 Dir(s) | ||
+ | </ | ||
+ | |||
+ | 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, | ||
+ | |||
+ | < | ||
+ | M: | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | 09.12.2009 | ||
+ | 01.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 21.03.2010 | ||
+ | 12 File(s) | ||
+ | 2 Dir(s) | ||
+ | </ | ||
===== Links ===== | ===== Links ===== | ||
* [[http:// | * [[http:// |
os/windows/batch.1297249932.txt.gz · Last modified: 2014-12-18 20:10 (external edit)