Ich weiß das solche Dinge nicht wirklich ermutigen: http://de.wikibooks.org/wiki/Batch-Programmierung:_Batch-Befehle#IF
Hier hast du die Verwendung von If. Beispiel 3 ist dann eine vollständige if then else wobei “then” nicht geschrieben wird. Übersetzt heißt das wenn irgendwas zu trifft (dann) mache das falls es nicht zu trifft (else) mache etwas anderes
Mit dieser Logik kann man so ziemlich alles abfragen und den Befehl zusammensetzen.
Bei der Powershell wäre ich vorsichtig. Dort unterscheidet sich die Syntax offenbar mehr als einem lieb ist. Andererseit kann sie aber auch wesentlich mehr. Zum Beispiel die Prozesszeiten genau messen.
Freut mich!
Und Wünsche sind immer erlaubt. Solang du Verständnis dafür mitbringst, wenn ich manche aus Gründen des Aufwands aussortieren muss…
Das wär so ein Wunsch, den ich gern aussortieren würde. Beim Eingeben des Namens müsste ich dann prüfen, ob es die Datei schon gibt und ggf. wieder rückfragen, ob der User sie wirklich überschreiben will. Manchmal ist es dem User ja eh egal, wie sie heißt, weil er sie nur vorübergehend braucht. Ich wollt halt den Dialog so einfach wie möglich halten - und umbenennen kann man ja immer.
Klar! Sorry, das hatte ich übersehen, weil ich meine Tests meist von der Kommandozeile gestartet hatte.
Lass es dir schmecken, die Uhr ist nun in Version 0.4N eingebaut.
Vorerst zeigt sie die Zeit nur in Sekunden an.
Ups - das war wirklich ein Fehler. Hier wurden zwei Werte vertauscht. Ist nun auch repariert.
Bau eine Systemabfrage ein. Ist System = Deutsche Sprache, dann alles so wie bisher. Ist System ungleich Deutsche Sprache soll das Programm nur mit 25% Leistung arbeiten.
Mit der Powershell werde ich mich vorerst sicherlich nicht einlassen.
Danke für den Link!
Im Frühjahr hatte ich meine alten Dos-Schinken vorgekramt. Auch wenn die aktuelle Syntax zum Teil nicht mehr paßt und auch nicht mehr alle Befehle erkannt werden, bringen einen die Beschreibungen der Befehle auf viele Ideen.
Beim Blick in die damals erstellten Batches stellte ich schmunzelnd fest, wie schnell man doch vergißt, wenn man sich nicht regelmäßig mit etwas beschäftigt Im Frühjahr hatte ich die Rücksprungschleifen alle mit if… gebaut. Auf dem damals aktiven, nun aber stillgelegten Internetrechner schlummert noch irgendwo eine Linksammlung mit Seiten, wo ich mir damals die Syntax dafür zusammengesucht hatte. Auswendig kann ich so was nicht.
Habe mal eines meiner Hauptmenüs vom anderen Rechner geangelt, nur mal so als Beispiel für stille Mitleser, die noch keine Idee haben, wie das aussehen könnte. Es bezieht sich natürlich noch auf das damals aktuelle pbftoosm.
cd /d c:\OSM-Rohdaten\pbf
@echo OFF
echo x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
echo x x x
echo x x Input-Dateien *.osm x
echo x x x
echo x x erstellen oder aktualisieren x
echo x x x
echo x x mit pbftoosm von Marqqs x
echo x x Datenquelle: geofabrik x
echo x x Batch-Autor: tippeltappel x
echo x x x
echo x x x
echo x x x
echo x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
echo x
echo x
echo x Startzeit
echo x %date:~0% - %time:~0,8% Uhr
echo x
:Anfang
echo x
echo x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
echo x x x
echo x x Auswahlmenue x
echo x x x
echo x x Deutschland mit angrenzenden Gebieten x
echo x x x
echo x x Datenbasis: europe.osm.pbf x
echo x x x
echo x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
echo x
echo x
echo x Gebietsauswahl
echo x
echo x A12 - D1-D12 x 4Q - 4 Querstreifen
echo x
echo x D1 - Nordsee x N - D1+D2+D3
echo x D2 - Schleswig x
echo x D3 - Seenplatte x
echo x
echo x D4 - Rhein-Ruhr x WON - D4+D5+D6
echo x D5 - Harz x
echo x D6 - Berlin x
echo x
echo x D7 - Eifel-Saar-Rheinld x WOS - D7+D8+D9
echo x D8 - Thrng-Steigerwald x
echo x D9 - Rhein-Ruhr x
echo x
echo x D10 - Harz x S - D10+D11+D12
echo x D11 - Alb-Bodensee x
echo x D12 - Inn x
echo x
echo x
REM Benutzereingaben
set /P w= [A]alle / [D1] / [D2] / [D3] / [D4] / [D5] / [D6] / [D7] / [D8] / [D9] / [D10] / [D11] / [D12] / [4Q] / [N] / [WON] / [WOS] / [s] Auswahl treffen:
echo x
echo x
REM die Option /I beim if bewirkt, daß nicht
REM zwischen Gross und Kleinschreibung
REM unterschieden wird.
if /I "%w%"=="A" goto :A
if /I "%w%"=="D1" goto :D1
if /I "%w%"=="D2" goto :D2
if /I "%w%"=="D3" goto :D3
if /I "%w%"=="D4" goto :D4
if /I "%w%"=="D5" goto :D5
if /I "%w%"=="D6" goto :D6
if /I "%w%"=="D7" goto :D7
if /I "%w%"=="D8" goto :D8
if /I "%w%"=="D9" goto :D9
if /I "%w%"=="D10" goto :D10
if /I "%w%"=="D11" goto :D11
if /I "%w%"=="D12" goto :D12
if /I "%w%"=="4Q" goto :A4h
if /I "%w%"=="N" goto :N
if /I "%w%"=="WON" goto :WON
if /I "%w%"=="WOS" goto :WOS
if /I "%w%"=="S" goto :S
echo Fehler: [%w%]
goto ende
REM Auswahlbestätigungen
REM xxxxxxxxxxxxxxxxxxxx
:A
echo x
echo x
echo "A" Auswahl: alle 12 Deutschland-Segmente
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-Eu12-pbf2osm-drophistory.bat
@echo OFF
goto ende
:D1
echo x
echo x
echo "D1" Auswahl: D1-Nordsee
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-DE01-pbf2osm-drophistory.bat
@echo OFF
goto ende
:D2
echo x
echo x
echo "D2" Auswahl: D2-Schleswig
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-DE02-pbf2osm-drophistory.bat
@echo OFF
goto ende
:D3
echo x
echo x
echo "D3" Auswahl: D3-Seenplatte
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-DE03-pbf2osm-drophistory.bat
@echo OFF
goto ende
:D4
echo x
echo x
echo "D4" Auswahl: D4-Rhein-Ruhr
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-DE04-pbf2osm-drophistory.bat
@echo OFF
goto ende
:D5
echo x
echo x
echo "D5" Auswahl: D5-Harz
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-DE05-pbf2osm-drophistory.bat
@echo OFF
goto ende
:D6
echo x
echo x
echo "D6" Auswahl: D6-Berlin
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-DE06-pbf2osm-drophistory.bat
@echo OFF
goto ende
:D7
echo x
echo x
echo "D7" Auswahl: D7-Eifel-Saar-Rheinland
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-DE07-pbf2osm-drophistory.bat
@echo OFF
goto ende
:D8
echo x
echo x
echo "D8" Auswahl: D8-Thueringen-Steigerwald
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-DE08-pbf2osm-drophistory.bat
@echo OFF
goto ende
:D9
echo x
echo x
echo "D9" Auswahl: D9-Erzgebirge-Boehmerwald
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-DE09-pbf2osm-drophistory.bat
@echo OFF
goto ende
:D10
echo x
echo x
echo "D10" Auswahl: D10-Schwarzwald
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-DE10-pbf2osm-drophistory.bat
@echo OFF
goto ende
:D11
echo x
echo x
echo "D11" Auswahl: D11-Alb-Bodensee
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-DE11-pbf2osm-drophistory.bat
@echo OFF
goto ende
:D12
echo x
echo x
echo "D12" Auswahl: D12-Inn
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-DE12-pbf2osm-drophistory.bat
@echo OFF
goto ende
:A4h
echo x
echo x
echo "A4h" Auswahl: A4h = Alle vier Querstreifen in einem Arbeitsgang schneiden
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-N-WON-WOS-S-pbf2osm-drophistory
@echo OFF
goto ende
:N
echo x
echo x
echo "N" Auswahl: N = D1+D2+D3 Norddeutschland
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-N-pbf2osm-drophistory.bat
@echo OFF
goto ende
:WON
echo x
echo x
echo "WON" Auswahl: OWN = D4+D5+D6 Ost-West-Deutschland Nordhaelfte
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-WON-pbf2osm-drophistory.bat
@echo OFF
goto ende
:WOS
echo x
echo x
echo "WOS" Auswahl: OWS = D7+D8+D9 Ost-West-Deutschland Suedhaelfte
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-WOS-pbf2osm-drophistory.bat
@echo OFF
goto ende
:S
echo x
echo x
echo "S" Auswahl: S = D10+D11+D12 Sueddeutschland
call c:\OSM-Rohdaten\pbf\Batch-Unterdateien\Deutschland-S-pbf2osm-drophistory.bat
@echo OFF
goto ende
:ende
echo x
echo x
set /P w= [TOP] zur Regionsauswahl zurueck / [FIN] Anwendung beenden Auswahl eingeben:
echo x
echo x
REM die Option /I beim if bewirkt, daß nicht
REM zwischen Gross und Kleinschreibung
REM unterschieden wird.
if /I "%w%"=="TOP" goto :Anfang
if /I "%w%"=="FIN" goto :schliessen
:schliessen
echo.
@echo OFF
echo x
echo x
echo x fertig
echo x %date:~0% - %time:~0,8% Uhr
echo x
echo Zum Verlassen der Anwendung
pause
echo on
Umlaute sind noch nicht restlos ausgemerzt. Die verursachen in der cmd-Box Kästchen oder merkwürdige Zeichen.
Ein gestalteter “Kopf” ist mir immer wichtig, damit ich später noch nachvollziehen kann, wo das Script her kommt, um was es in der batch geht, welche Daten verarbeitet werden usw.
Ist mir sonst zu mühsam, mich da wieder rein zu finden, wenn ich mal längere Zeit nicht mehr reingesehen habe.
Die Benennung der Unterbatches wurde so gewählt, daß ich in der Menübatch schon einigermaßen erkennen kann, was in den aufgerufenen Unterroutinen passiert.