coldzero89
Goto Top

3 Batchfiles verstehen

Moin,

dritter Anlauf diese Frage zu schreiben (Einmal IE weg, anderes Mal Tab geschlossen -.-)

Ich habe 3 Batchfiles bekommen die bisher auf gewissen PCs im Einsatz sind. Diese wurden mir als Bespiel gegeben, da ich ein Batch schreiben soll das ähnliches können soll. Was diese allgemein Tun weiß ich, was diese im Script Schritt für Schritt machen, versteh ich so gut wie null.

Was tun die 3 Batches?
Eins legt meines Erachtens Time Jobs an (unter XP)
Die 2 anderen unterscheiden sich, tun aber auch irgendwo dasselbe (Fragt mich nicht).
Allgemein wird in einen Ordner gegangen in dem Fortlaufend eine XML Datei von einem Programm mit Werten gefüttert wird. Alle 2 Stunden geht eine Batch hin, nimmt sich die XML und zieht sie sich und verpackt sie.
Fürs Verständnis
Ich soll mit dem Beispiel dieser Batches ein Batch schreiben was (so geplant bisher) in die XML geht und die Werte der letzten Stunde nimmt und in eine neue XML schmeißt und diese sogleich verpackt.

Die Readme zu den Batches
These batches are a demo implementation for automatic file handling on the SCDI Plant-PC.

They should be installed at c:\program files\conergy\SCDIA\scdi batch and will process data in c:\SCDIA_DATA.

You should modify the install_timed_jobs.bat for your own needs and start it once, if you need automatic file handling.

The 'At' command therein will periodically start the zip_and delete.bat.

When adjusting the 'At' times, make sure not to hit the SCDIA file write time (e.g. 10:00, 10:15, 10:30, 10:45...), as then SCDIA will have problems writing the files.

Needs 7-zip to be installed.
For remote transfer of files, you need to install or configure a ftp server.
The batchs are build for english time and date format mm/dd/yyyy
Batch install_timed_jobs (Nennen wir es Batch1)
@echo off

rem install automatic scdi file handling
rem make sure to not hit a work-time slot of SCDIA (normally full hour, 15, 30, 45 mins past)

rem use this line for once-a-day-transfer
at 00:10 /EVERY:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 cmd /c "%ProgramFiles%\conergy\scdia\scdi batch\zip_and_delete.bat" c:\scdia_data  

rem add these lines for multiple transfers per day. Notice the different batch calls 
at 06:10 /EVERY:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 cmd /c "%ProgramFiles%\conergy\scdia\scdi batch\zip_and_delete_all.bat" c:\scdia_data  
at 08:10 /EVERY:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 cmd /c "%ProgramFiles%\conergy\scdia\scdi batch\zip_and_delete_all.bat" c:\scdia_data  
at 10:10 /EVERY:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 cmd /c "%ProgramFiles%\conergy\scdia\scdi batch\zip_and_delete_all.bat" c:\scdia_data  
at 12:10 /EVERY:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 cmd /c "%ProgramFiles%\conergy\scdia\scdi batch\zip_and_delete_all.bat" c:\scdia_data  
at 14:10 /EVERY:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 cmd /c "%ProgramFiles%\conergy\scdia\scdi batch\zip_and_delete_all.bat" c:\scdia_data  
at 16:10 /EVERY:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 cmd /c "%ProgramFiles%\conergy\scdia\scdi batch\zip_and_delete_all.bat" c:\scdia_data  
at 18:10 /EVERY:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 cmd /c "%ProgramFiles%\conergy\scdia\scdi batch\zip_and_delete_all.bat" c:\scdia_data  
at 20:10 /EVERY:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 cmd /c "%ProgramFiles%\conergy\scdia\scdi batch\zip_and_delete_all.bat" c:\scdia_data  

rem to remove jobs, type "at /delete"  
Batch zip_and_delete (Nennen wir es Batch2)
@echo off

rem called by "at" jobs  
rem zips the past day's xml files in the directory and deletes them on success  
rem needs date format mm/dd/yyyy

set scdia_out_directory=%1
if "%scdia_out_directory%" neq "" goto start  

set scdia_out_directory=..

:start

if "%scdia_out_directory%" equ "" goto end  

setlocal enableextensions

for /f "tokens=2-4 delims=/ " %%i in ('date /t') do set today=%%k_%%i_%%j  

for %%T in (%scdia_out_directory%\*.xml) do  ( 

	if not %today% equ %%~nT (
		rem process only files from past days
		echo process %%~nT.xml
		( ren "%%T" "%%~nT._xml" )  

		rem uses zip format
		rem ( "%ProgramFiles%\7-zip\7z.exe" a -tzip "%scdia_out_directory%\%%~nT.zip" "%scdia_out_directory%\%%~nT._xml" && del "%scdia_out_directory%\%%~nT._xml" )  
		rem uses 7-zip format, half file size
		( "%ProgramFiles%\7-zip\7z.exe" a "%scdia_out_directory%\%%~nT.7z" "%scdia_out_directory%\%%~nT._xml" && del "%scdia_out_directory%\%%~nT._xml" )  

	) else (
		echo leaving alone %%~nT.xml
	)
)
endlocal

:end
Batch zip_and_delete_all (Nennen wir es Batch3)
@echo off



rem called by "at" jobs  
rem zips all xml files in the directory and deletes them on success

set scdia_out_directory=%1
if "%scdia_out_directory%" neq "" goto start  

set scdia_out_directory=..

:start

if "%scdia_out_directory%" equ "" goto end  

setlocal enableextensions

FOR /f "tokens=1-3 delims=: " %%G IN ('time /t') DO set timestring=%%G_%%H%%I  

for %%F IN (%scdia_out_directory%\*.xml)  DO ren "%%F" "%%~nF_%timestring%._xml"  

rem uses zip format
rem for %%F IN (%scdia_out_directory%\*._xml) DO "%ProgramFiles%\7-zip\7z.exe" a -tzip "%scdia_out_directory%\%%~nF.zip" "%%F" && del "%%F"  
rem uses 7-zip format, half the file size
for %%F IN (%scdia_out_directory%\*._xml) DO "%ProgramFiles%\7-zip\7z.exe" a "%scdia_out_directory%\%%~nF.7z" "%%F" && del "%%F"  

endlocal

:end

Würde mich freuen wenn die Scripte ein wenig verständlicher Aussehen (Auch einfacher) könnte oder einfach nur mir - nett wäre Zeile für Zeile - erklärt werden könnte.

Danke im Vorraus.

Gruß Zero

Content-Key: 189932

Url: https://administrator.de/contentid/189932

Printed on: April 20, 2024 at 00:04 o'clock

Mitglied: 76109
76109 Aug 21, 2012 at 12:47:08 (UTC)
Goto Top
Hallo Zero!

dritter Anlauf diese Frage zu schreiben (Einmal IE weg, anderes Mal Tab geschlossen -.-)
Seit mir das am Anfang auch 2-3 passiert ist, schreibe ich meine Texte zuvor ganz entspannt in einem Texteditorface-wink

Gruß Dieter
Member: ColdZero89
ColdZero89 Aug 21, 2012 updated at 13:21:02 (UTC)
Goto Top
Moin didi,

ja so hab ichs auch geamcht xD das war mir dann zu dumm face-big-smile

Sehe ich eigentlich richtig das auch VBS in einem der Batchfiles platz gefunden hat?

Gruß Zero
Mitglied: 76109
76109 Aug 21, 2012 at 13:31:08 (UTC)
Goto Top
Hallo Zero!

Nö, VBS kann ich nicht entdecken, aber das Erklären überlasse ich lieber den Batch-Profis...face-wink

Gruß Dieter
Member: ColdZero89
ColdZero89 Aug 21, 2012 at 13:41:56 (UTC)
Goto Top
Moin,

ok danke, wunderte mich nur wegen diesem "setlocal" hab das bisher nur dann gesehen wenn VBS mit im Spiel war.

Warten wir mal ab, vielleicht gibts es wen der sich die Mühe macht. Weil ich finde das echt übelst verwirrend face-big-smile

Gruß Zero
Member: Penny.Cilin
Penny.Cilin Aug 21, 2012 at 13:49:43 (UTC)
Goto Top
Zitat von @ColdZero89:
Moin,

ok danke, wunderte mich nur wegen diesem "setlocal" hab das bisher nur dann gesehen wenn VBS mit im Spiel war.

Setlocal ist schon seit W2K bei Batches möglich. Einfach mal in der Eingabeaufforderung
setlocal /?
eingeben und dann den Hilfetext lesen.


Gruss Penny.
Member: SlainteMhath
SlainteMhath Aug 21, 2012 at 13:57:25 (UTC)
Goto Top
Moin,

Zitat von @ColdZero89:
Warten wir mal ab, vielleicht gibts es wen der sich die Mühe macht...
Mal ganz ehrlich: meinst du wirklich du bekommst jetzt hier ~70 Batchcode Zeile für Zeile vorgekaut? Versuch's doch mal selbst, und wenn du zu einzelnen Befehlen/Zeilen konkrete Fragen hast dann stell sie hier.

lg,
Slainte
Member: ColdZero89
ColdZero89 Aug 21, 2012 updated at 14:27:12 (UTC)
Goto Top
Moin,

nein nicht Zeile für Zeile aber so ein wildes durcheinander vllt mal aufbrechen.
Ich hab nur immer grob was mit Batch zu tun gehabt, aber das was beispielsweise in Zeile 18 von Batch 2 steht. Dieses ganze %%.
Oder in Batch 2 allgemein, ich steig da null durch. Woher weiß das System wo der Dateipfad ist? Da steht nix von einem Pfad. Oder neq equ ? herrjeh in was für einer bedeutung steht das zu dem anderen kram.

Darum gehts mir und solltest du andere Beiträge von mir gelesen haben, dürftest du wissen ich probiere sowas immer zu erst selbst. Ist einfach ein besseres gefühl sich sowas selbst zu erarbeiten, nur da scheitere ich vorne und hinten.

Edit: Außerdem wenn ich meine Zeile für Zeile dürfte eigentlich jedem klar sein das ich den kram mit "Echo" und dieses rem gedöns nicht meine, sondern da wo es zur sache geht.

Edit2: Ok setlocal hatte ich allgemein nichtmal nachgeschaut, aber dass das zu Batch gehört, das hät ich netmal erraten x) dafür habs ichs halt immer nur in verbindung zu Batch mit VBS gesehen ^_^ Danke schau ich mir aber ma an.

Gruß Zero
Member: Biber
Biber Aug 21, 2012 updated at 17:23:35 (UTC)
Goto Top
Moin ColdZero89,

du musst es auch nicht Zeile für Zeile lesen oder mit der Uhrmacherlupe draufgucken.

Tritt bitte im der ersten Phase der Reinfummelns in die Thematik zwei Schritte zurück, glaub fest an das Gute im Menschen (der die Bätche zusammengeschrotet hat) und lies nur die Kommentare

Im Batch "Eins", der alles andere direkt oder über Bande startet, steht:

...
rem install automatic scdi file handling 

rem make sure to not hit a work-time slot of SCDIA (normally full hour, 15, 30, 45 mins past
...

--> dieser Schnipsel richtet ein paar AT-Jobs ein (=AT-Jobs sind per Kommandozeile eingerichtete zeitgesteuerte Aufgaben, siehe AT/? am CMD)

--> und diese Jobs sollen möglichst dann starten, wenn die SCDIA-Applikation nicht beschäftigt ist. Und das ist sie im Viertelstunden-Takt.

Deshalb werden die AT-Jobs z.B. um 10 Minuten nach einer vollen Stunde eingerichtet.

Damit weisst du schonmal, was denn der Plan gewesen ist bzw was eigentlich passieren sollte beim Aufruf des Bätches.

Der Rest ist über die Hilfe am CMD-Prompt rauszubekommen (AT /?, Setlocal /? etc.)

Grüße
Biber
Member: SlainteMhath
SlainteMhath Aug 22, 2012 at 04:52:18 (UTC)
Goto Top
Biber hat's mir vorweg genommen:
Der Rest ist über die Hilfe am CMD-Prompt rauszubekommen (AT /?, Setlocal /? etc.)

Und dann gibt es auch Seiten wie diese auf denen man die Funktionsweise und den Syntax der einzelnen Befehle nachlesen kann.

Ansonsten gibts hier im Forum auch das ein oder andere sehr gute Batch-Tutorial.

lg,
Slainte
Member: bastla
bastla Aug 22, 2012 at 06:49:22 (UTC)
Goto Top
... und wenn Du beim Nachforschen jeweils mit dem ersten Wort einer Zeile beginnst - etwa mit "if /?" - hast Du auch gar keine so schlechte Chance, zB etwas über "neq" oder "equ" zu erfahren ... face-wink

Wenn dieses erste Wort ein "for" sein sollte, kann ich wärmstens (nicht nur bei der aktuellen Wetterlage) friemlers Tutorial zur FOR-Schleife empfehlen ...

Grüße
bastla
Member: ColdZero89
ColdZero89 Aug 22, 2012 at 07:22:06 (UTC)
Goto Top
Moinsen Moinsen,

das is doch auch eine Hilfe face-smile stupser in die richtige Richtung ^_^
Werd mich damit mal befassen, bzw muss ja auch irgendwo face-big-smile
Member: ColdZero89
ColdZero89 Aug 22, 2012 updated at 07:33:39 (UTC)
Goto Top
Moin,

mit den Tipps von euch sieht das schon ganz anders aus, das Script fängt an Sinn zu machen.

Was mir bisher aber null schlüssig ist und wird, ist Batch 2 Zeile 22 woher weiß der was %%~nT ist? Wie kann der %today% (Auch ohne was zu finden, wirds wahrscheinlich das Heutige Datum wiedergeben (Frage ist nur ob mit oder ohen Zeit)) mit %%~nT vergleichen, wenn nirgendswo steht welchen Inhalt %%~nT hat?

Auch bei if /? hab ich dazu nix gefunden.

Edit: Btw ich hab schon gegooglet. Nur finden tu ich wenn ich den Snippet "%%~nT" eingebe nur Windows NT bla, selbst mit "Batch %%~nT" finde ich nix. Manchmal ist Batch doch schlimmer wie gewisse Inseln der Programmiersprache xD

Gruß Zero
Member: bastla
bastla Aug 22, 2012 updated at 07:47:20 (UTC)
Goto Top
Hallo ColdZero89!

Zum "%%~nT"-Mysterium: Nicht immer wird %I als Schleifenvariable verwendet - hier ist es eben %T; dann gilt aber das, was Du in der Hilfe zu "for" (ziemlich am Ende) findest:
%~nI        - Erzeugt nur den Dateinamen von %I.
(dass in Batch die Laufvariablen der "for"-Schleife mit "%%" geschrieben werden müssen, weißt Du ja sicher schon).

Die Variable %today% wird übrigens in Zeile 18 zusammengebaut - allerdings für ein englisches Datumsformat (und für W2000) - um ein Ergebnis der Form "JJJJ_MM_TT" zu erhalten, wäre
set "today=%date:~-4%_%date:~-7,2%_%date:~-10,2%"
besser (siehe dazu "set /?") ...

Grüße
bastla
Member: ColdZero89
ColdZero89 Aug 22, 2012 at 08:13:28 (UTC)
Goto Top
Moin,

ah danke bastla, ja das nI hab ich gesehen aber nicht beachtet da ich halt nach nT gesucht habe. Aber danke face-big-smile

Zeile 18 - gar nicht gesehen am ende das dort today gesetzt wird... aber allgemein wird ja das Datumsformat wie angegeben in Zeile 5 benötigt "rem needs date format mm/dd/yyyy"

Soweit ich weiß von einem Kollegen sind die Systeme auch auf Englische Zeit was das angeht umgestellt - frag mich net wieso, es ist so und da diese Systeme von einem Dienstleister gestellt werden, gibts da auch nix dran zu rütteln. (grml)

Aber solangsam splittet sich mir das ganze geschehen mal auf. Danke nochmal Bastla

Gruß Zero
Member: bastla
bastla Aug 22, 2012 at 08:22:03 (UTC)
Goto Top
Hallo ColdZero89!
aber allgemein wird ja das Datumsformat wie angegeben in Zeile 5 benötigt "rem needs date format mm/dd/yyyy"
Als Ausgangsformat ja - aber in %today% steht es dann doch als "YYYY_MM_DD"; das kannst Du aber ja ohnehin sehen, wenn Du den Batch mit "echo on" anstatt "echo off" ausführst, oder zB eine Zeile
echo today=%today%
einbaust ...

Einfacher (aber nicht übersichtlicher) kommst Du an die Variablenwerte, indem Du im Batch eine Zeile
set & pause
für alle Variablen oder zB
set t & pause
für alle mit "t" beginnenden Variablennamen einbaust ...

Grüße
bastla
Member: ColdZero89
ColdZero89 Aug 22, 2012 at 08:53:07 (UTC)
Goto Top
Moin,

in Batch 3 Zeile 21, dort werden die Dateni in JJJJ_MM_TT_HH_MM umbenannt - zumindestens hole ich diese so vom Server. Die Variable F beinhaltet scheinbar das Datem und der Timestrnig enthält die Zeit, aber wo wird denn F mit dem Datum gesetzt?
Bin ich nur wieder zu blind oder steht das da tatsächlich nicht?

Gruß Zero
Member: bastla
bastla Aug 22, 2012 at 09:11:01 (UTC)
Goto Top
Hallo ColdZero89!
Die Variable F beinhaltet scheinbar das Datem und der Timestrnig enthält die Zeit
Nein; in %%F stehen der Reihe nach die .xml-Dateien, die dann umbenannt werden, indem (nur) der Timestamp dem Namen hinzugefügt wird (das Datum müsste also zu diesem Zeitpunkt bereits Teil des Dateinamens sein) ...

Grüße
bastla
Member: ColdZero89
ColdZero89 Aug 22, 2012 at 09:34:12 (UTC)
Goto Top
Moin,

ah ok, da muss ich mal Rücksprache mit dem Kollegen halten, der das Programm kennt, das die XML Datein schreibt. Ok dann ist das auch aufgeklärt.

Danke face-big-smile

Gruß Zero
Member: ColdZero89
ColdZero89 Aug 22, 2012 updated at 13:17:38 (UTC)
Goto Top
Moin,

eins was mir grad einfällt das mit immer noch nicht schlüssig ist: woher weiß das Batch in Batch 2 und 3 in zeile 7 und 8 was %1 ist? Womit wird das gefüllt und vorallem woher kommt wenn die Info?

Ein Punkt der mir halt überhaupt net aufgeht.

EDIT: Ich habs grad selbst entdeckt. Die Timejobs übergeben einen Pfad => %1, somit alles aufgeklärt.

Wunderbar face-big-smile

Gruß und Danke Zero
Member: Penny.Cilin
Penny.Cilin Aug 22, 2012 at 14:00:54 (UTC)
Goto Top
Halli hallo hallöle Coldzero89,


bei den 3 Skripten bin ich auch am rätseln gewesesn.
Das Bätscheln ist halt nicht so einfach. Und schon garnicht, wenn man noch nie oder sehr selten damit zu tun hat.

Wie auch immer, daß hast Deine Fragen gelöst bekommen.


Gruß Penny.
Member: pieh-ejdsch
pieh-ejdsch Aug 22, 2012 updated at 18:55:53 (UTC)
Goto Top
moin Zero,

bei ein klein wenig Aufklärung hilft Dir auch dieses Script (nicht nur beim Finden von Fehlern):
Batchcode erstellen - Fehler im Batch leichter finden

Gruß Phil
Member: ColdZero89
ColdZero89 Aug 23, 2012 at 06:55:09 (UTC)
Goto Top
Moin,

danke face-smile

Ja, so nach und nach kleine Unschlüssigkeiten aufgeklärt und man fängt leicht an es zu verstehen, ich versteh nicht alles, bzw verstehen was es tut ja, aber wieso halt - nicht komplett, dennoch so nach und nach irgendwie sicherlich ^_^

z.B. Batch 3 Zeile 19 und 21.
FOR /f "tokens=1-3 delims=: " %%G IN ('time /t') DO set timestring=%%G_%%H%%I   
for %%F IN (%scdia_out_directory%\*.xml)  DO ren "%%F" "%%~nF_%timestring%._xml"  
Beides schleifen, wieso aber brauch man für die erste Schleife mit dem Timestring eine Schleife? In meinem Kopf reicht es Theoretisch Timestring einfach zu setzen und PENG face-big-smile

Die zweite Schleife verstehe ich - denke ich - soweit, bin mri nur nicht sicher.
Die Schleife mit %%F ließt alle Datein mit der Endung .xml in dem Ordner ein und benennt diese mit der Variablen "timestring" um. Wieso nun aber in der Umbenennung der Datei der Hauptname über %%~nF aufgerufen wird, erschließt sich mir nicht.

Gruß Zero
Member: bastla
bastla Aug 23, 2012 updated at 10:49:33 (UTC)
Goto Top
Hallo ColdZero89!
wieso aber brauch man für die erste Schleife mit dem Timestring eine Schleife?
Da "time /t" nun mal ein Befehl ist, brauchst Du die Schleife zum Abfangen und Zerlegen der Ausgabe - lässt sich allerdings auch über die Variable %time% machen:
set "timestring=%time:~,2%_%time:~3,2%%time:~6,2%"  
set "timestring=%timestring: ="%  
Die zweite Zeile ist nötig, um das Leerzeichen am Anfang bei einstelligen Stunden zu entfernen bzw auf Wunsch auch mit
set "timestring=%timestring: =0"%
durch 0 zu ersetzen ...
Wieso nun aber in der Umbenennung der Datei der Hauptname über %%~nF aufgerufen wird, erschließt sich mir nicht.
Es soll ja der neue Name aus dem alten Namen + %timestring% gebildet werden - daher brauchst Du eben auch den alten Namen ohne Typ (.xml; wird ja am Ende noch hinzugefügt) - etwas besser wäre übrigens
for %%F in (%scdia_out_directory%\*.xml)  DO ren "%%F" "%%~nF_%timestring%%%~xF"
oder
for %%F in (%scdia_out_directory%\*.xml)  DO ren "%%F" "%%~nF_%timestring%.*"
- damit wird der Typ automatisch übernommen ...

Noch ein Hinweis zum Testen: In vielen Fällen kannst Du eine Zeile auch direkt in CMD eingeben, um Dir den Ablauf anzusehen, wobei ein "echo" vor "gefährlichen" Befehlen dafür sorgt, dass diese nur angezeigt werden - hier zB
for %F in (%scdia_out_directory%\*.xml)  DO @echo ren "%F" "%~nF_%timestring%%~xF"
Zu beachten ist dabei, dass die Schleifenvariablen bei Direkteingabe nur mit einem Prozentzeichen zu schreiben sind (deswegen auch zB "%~nF" und "%~xF").

Grüße
bastla
Member: ColdZero89
ColdZero89 Aug 23, 2012 updated at 08:05:20 (UTC)
Goto Top
Moin und danke bastla,

ah das heißt also durch das einlesen der Dateinamen (Zweite Zeile aus dem Post über bastla) und das aufrufen durch %~nF oder %~xF wird der komplett Zerteilt (in Dateiname und Dateiendung) um eben dort die Zeit zwischen zu packen. - Solangsam kapiere ich face-big-smile

Ganzen Namen einlesen - Test.xml -> Namen zerteilen in Dateiname und Endung - Test und xml -> Zeit dazwischen einfügen und neuer Dateiname geschaffen - Test_9_35.xml.

Cool, da ich die Datein nun in XML abspeichere, werde ich das mit xF wahrscheinlich nutzen.
Verstanden? Check face-big-smile

Ok und aus der timestring Zeile: Ah, er lässt sich die Zeit wie in ner Normalen ausgabe anzeigen um diese zu zerlegen und einzelnd einzulesen. Was bedeutet aber %%H%%I? wie gibt der das wieder nud dreht es, ohne zu sagen (Also mitgeteilt bekommen - somit ohne zu wissen) was stunden und was minuten sind?

Gruß Zero
Member: bastla
bastla Aug 23, 2012 at 09:07:55 (UTC)
Goto Top
Hallo ColdZero89!

Die einzelnen Tokens (aufgrund der Delimiter entstandenen Teile) werden einfach in alphabetischer Reihenfolge zur Verfügung gestellt - im konkreten Fall bei Schleifenvariable %%G ist daher der erste Teil %%G, der zweite Teil %%H, ...

Grüße
bastla
Member: ColdZero89
ColdZero89 Aug 23, 2012 updated at 09:20:06 (UTC)
Goto Top
Moin,

ah ja klar -.- Token 1-3, ok. Dieser ganze Tokenkram verwirrt mich immernoch. Wobei ich jedesmal vergesse, dass das ne Schleife ist und was daraus folgt... danke ^_^

EDIT: Ah und wie ich gerade mit dem echo bei direkter eingabe ein wenig rumexperimentiert habe hängt die Angabe der "Platzhalter" (G, H, I) von dem Platzhalter ab der als erstes genannt wird (hier G). Wenn man G durch A ersetzt, muss H durch B ersetzt werden. So langsam - herrjeh - raucht mein kopf aber ich versteh es auch so langsam.
Ebenfalls merkte ich das I gar nicht benötigt wird - ändert nichts an der Ausgabe. Gibt es für %I einen Grund? oder ist das einfach nur so hingeschrieben für eventuelle Sekunden? (Ich weiß es sind 3 Tokens die durchlaufen, aber theoretisch müssten es doch nur 2 sein, oder seh ich das Falsch? Durch time /t wird doch nur 11:19 wiedergegeben und nicht noch Sekunden.

Gruß Zero
Member: Penny.Cilin
Penny.Cilin Aug 23, 2012 at 10:33:14 (UTC)
Goto Top
halli hallo hallöle,

Es ist die Frage wie Du die aktuelle Uhrezeit ermittelst.
Ich kenne einmal folgende Möglichkeit:
FOR /F "tokens=*" %I IN ('TIME /T') DO Echo Es ist jetzt %I Uhr 
und zum anderen die Möglichkeit mittels TIME und danach die die Stunden, Minuten, Sekunden aufzudröseln.
    Set HH=%TIME:~0,2%
    Set MM=%TIME:~3,2%
    Set SS=%TIME:~6,2%

Wobei die zweite Methode das Problem hat, daß bei deutscher Zeit die führende NULL nicht angezeigt wird.


Gruss Penny.
Member: bastla
bastla Aug 23, 2012 updated at 10:50:38 (UTC)
Goto Top
@Penny.Cilin

Schön langsam wird's hier unübersichtlich (sonst wäre Dir vermutlich mein Kommentar da oben aufgefallen face-wink) ...

Grüße
bastla
Member: bastla
bastla Aug 23, 2012 updated at 10:55:06 (UTC)
Goto Top
Hallo ColdZero89!
Gibt es für %I einen Grund? oder ist das einfach nur so hingeschrieben für eventuelle Sekunden? (Ich weiß es sind 3 Tokens die durchlaufen, aber theoretisch müssten es doch nur 2 sein, oder seh ich das Falsch? Durch time /t wird doch nur 11:19 wiedergegeben und nicht noch Sekunden.
Die 3 Tokens beziehen sich vermutlich auf eine Zeitangabe der Art "11:19 AM" - ansonsten hast Du recht, dass es eigentlich nur Tokens für Stunde und Minute bräuchte (die Variable "%time%" bietet im Gegensatz dazu sogar Hundertstelsekunden) ...

Grüße
bastla
Member: ColdZero89
ColdZero89 Aug 23, 2012 at 11:09:20 (UTC)
Goto Top
Moinsen,

ah ok das kann natürlich sein. Erklärt es auch, vorrausdenkend der/die Mann/Frau der/die das geschrieben hat face-big-smile

Nun versteh ich das solangsam auch und bastla, danke für den Tip mit Echo und der direkten EIngabe, es macht vieles um so vieles verständlicher

Was mir dabei aufgefallen ist: Ruft mein ein Script - wenn es funktioniert man dennoch alle parameter mal sehen will - über Call PFAD\SCRIPT auf, sieht man auch Zeile für Zeile, was da ab geht, so hat man das Script dann im "Fluss" des ausführenden Scriptes.

Gruß Zero