blutwurst-
Goto Top

Problem bei Zeit Variable in Batch unter engl. Win95

Blutiger Anfänger sucht Rat...

Erstmal ein freundliches „Hallöchen“ an alle

zu meinen Problem:
Ich möchte div. Ordner u. Dateien per Batch als Sicherungskopie an eine andere Stelle in einen Backup-Ordner kopieren. Den Sicherungsordner natürlich versehen mit Datum und Zeit – Stempel.
Durch viele Tipps hier im Forum und aus anderen Foren, habe ich begonnen mir eine Batch zusammen zu Basteln die im Großen u. Ganzen auch funktioniert, mit einer Ausnahme:
Das Englische Zeitformat macht mir Probleme!
Die Uhrzeit wird als Beispiel mit 08:14:56.03p ausgegeben. Nun kann man ja keinen Ordner mit : (Doppelpunkt) im Name anlegen (Sonderzeichen). Hier mal meine Batch zur Verdeutlichung was ich so verbrochen habe…

@echo off

set quell=C:\Dh_test
set ziel=D:\Testback

set field=3
set key=Current
if %OS%!==Windows_NT! set field=4
if %OS%!==Windows_NT! set key=The
echo. | date | find "%key%" > }{.bat
echo shift> %key%.bat
echo set xdate=%%%field% >> %key%.bat
call }{
echo. | time | find "%key%" > }{.bat
echo set xtime=%%%field% > %key%.bat
call }{
del %key%.bat
del }{.bat
set field=
set key=
echo %xdate% %xtime%

echo Ordner (Daten) von %quell% nach %ziel%
xcopy "%quell%" "%ziel%\%xdate%%xtime%" /V /E /S /Y /I /R /H /q


- Die Variable %xdate% funktioniert bestens
- %xtime% leider nicht.

Mein Hilfeschrei an alle Experten:
wie könnte man meine Batch so umbauen, dass das Zeit-Format auch im Ordnername funktioniert?

Im Win95 möchte ich die Ländereinstellung nicht ändern, da das Windows95 als Betriebssystem auf einer Fräsmaschine läuft u. die Frässoftware die engl. Ländereinstellung benötigt.

Bin mit meinem Anfängerwissen jetzt leider doch an meiner Persönlichen Grenze angekommen.

Danke schon mal an alle für die Hilfe

Mit freundlichen Grüßen Blutwurst-

Content-Key: 58097

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

Printed on: April 26, 2024 at 16:04 o'clock

Member: geTuemII
geTuemII May 03, 2007 at 11:23:34 (UTC)
Goto Top
Da der Biber gerade nicht online ist, . Vielleicht kommst du damit ja schon klar.

geTuemII
Member: bastla
bastla May 03, 2007 at 12:51:24 (UTC)
Goto Top
Hallo Blutwurst- und willkommen im Forum!

Mit W95-Bordmitteln sehe ich eigentlich keine Möglichkeit zur Umwandlung der ":" in etwas Brauchbares, daher würde ich Dir das Utility "sed" empfehlen (Download zB über diese Seite oder gleich die Version GNU sed v4.0.7).

Der Einsatz könnte etwa so aussehen:
echo. | time | find "%key%" | sed s/[:.]/-/g > }{.bat  
Damit werden alle ":" und "." in "-" umgewandelt (oder zB mit
... | sed s/[:.]//g
einfach durch Nichts ersetzt, also entfernt).
Letztes Beispiel:
... | sed s/[^^0-9]//g
entfernt alle Zeichen außer den Ziffern ("0" - "9").

Grüße
bastla
Member: Blutwurst-
Blutwurst- May 03, 2007 at 14:31:22 (UTC)
Goto Top
Hallole,

erstmal Dankeschön für die Tipps.


@geTuemII

Das Tutorial von Biber ist ja mal richtig „Brutal“ (positiv gemeint)…. Da Raucht einem Beginner wie mir ja echt die Birne… *lach* Aber da kämpf ich mich durch!

@bastla

Der Tipp von Dir mit dem Tool "sed" scheint mir ein guter Weg zu sein um schnell auf ein Ergebnis zu kommen. Das werde ich morgen früh auf der Arbeit gleich mal ausprobieren. Ich gebe dann nach dem Test gleich mal Rückmeldung.

Also nochmals besten Dank bis hier hin.


Grüße Blutwurst-
Member: geTuemII
geTuemII May 03, 2007 at 15:14:09 (UTC)
Goto Top
Das Tutorial von Biber ist ja mal richtig „Brutal“ (positiv
gemeint)…. Da Raucht einem Beginner wie mir ja echt die Birne… *lach*

Ja, unser Bereich Batch und Shell in seinem völlig unbeachteten Seitenzweig dieses Univers^WForums ist ein immerwährender Quell heller Freude. face-wink Das Tut hat übrigens auch noch einen ersten und einen zweiten Teil. ...und das querlesen vorhandener Beiträge ist auch lehrreich.

geTuemII
Member: bastla
bastla May 03, 2007 at 15:25:30 (UTC)
Goto Top
@geTuemII

Du deckst den nahrhaften Kollegen aber ordentlich ein ... face-wink

Warum ich nicht reflexartig (und damit alleine heute schon zum zweiten Mal) auf Biber's Tutorial verwiesen habe, ist folgende Zeile seiner "GetAllDateTimeInfos.bat":
IF NOT "%OS%"=="Windows_NT" echo "%0 läuft nur unter WinNT oder höher. Sorry." && GOTO :eof  

Ansonsten wäre es ja kein großes Problem, etwa ein
set xtime=%time:~0,8%
echo %xtime::=-%
zu verwenden ...

@blutwurst-
Die Tutorials anzuschauen schadet aber trotzdem nicht. face-wink

Grüße
bastla
Member: geTuemII
geTuemII May 03, 2007 at 15:32:51 (UTC)
Goto Top
Warum ich nicht reflexartig (und damit alleine heute schon zum zweiten Mal) auf
Biber's Tutorial verwiesen habe
Gell, das wird langsam zum Pawlowschen Reflex?! <grinz>

geTuemII
Member: bastla
bastla May 03, 2007 at 15:37:47 (UTC)
Goto Top
Geht's Dir also auch so? Endlich fühle ich mich verstanden ... face-wink

bastla
Member: Biber
Biber May 03, 2007 at 18:59:30 (UTC)
Goto Top
Moin blutwurst-,

auch von mir willkommen im Forum.

Zur Not hätte ich auch noch eine Alternative, falls Du keinen SED auftreibst, der unter Win95 fliegt...

Aber ganz eindeutig - ich halte bastlas Strategie mit SED für die allersinnvollste Option.
Der nachfolgende Batch ist mehr das Ergebnis sportlichen Ehrgeizes (oder kindlichen Spieltriebs?).

@REM ---------snipp GetWin95ENTime.bat Placed in the Public Domain Biber 2007
@echo off
REM ---Time-Format möge sein 08:14:56.03p 
REM ---ab hier anpassen!!!!!!!!!!!!!!
Set $tmp$=c:\temp\timetmp.txt
Set $find$=c:\Win95\find.exe
REM [unter WinNT++] Set $tmp$=%temp%\timetmp.txt
REM [unter WinNT++] SET $find$=find
REM ---bis hier anpassen!!!!!!!!!!!!!
REM Mit welchem Parameter/für welche Phase ist der Batch gerufen...
if "%1"=="" goto Init  
if "%2"=="" goto GetHours  
if "%3"=="" goto GetMinutes  

REM Sekunden extrahieren Time-Format möge sein 08:14:56.03p 
%$find$% ":%3." %$tmp$% > nul  
REM ---ACHTUNG: bei Dt-Datumsformat ist es ein Komma statt des Punkts!!
REM [Dt] %$find$% ":%3," %$tmp$% > nul  

if not errorlevel==1 if errorlevel==0 set SS=%3
goto done

REM Hier die Minuten rausfieseln:Time-Format 08:14:56.03p 
:GetMinutes
%$find$% ":%2:" %$tmp$% >nul  
if not errorlevel==1 if errorlevel==0 set MM=%2
goto done

REM ...Stunden rausdröseln ...die haben ein Leerzeichen vor der Ziffer..
:GetHours
%$find$% " %1:" %$tmp$% >nul  
if not errorlevel==1 if errorlevel==0 set HH=%1
goto done

REM Die Zeit mit dem Befehl "echo.|time" in eine Datei schreiben  
REM Die brauchen wir nämlich so ein- oder zweimal in dem Ablauf
:Init
echo.|time > %$tmp$%

REM Für alle Zeit-Teile [Stunden, Minuten, Sekunden] 
REM die Alternativen durchflöhen... hilft ja nix...
REM Dafür brauchen wir halt diese Dummy-Parameter "x",   
REM um Stunden als Stunden, Minuten als Minuten etc zu erkennen.
FOR %%i IN (0 1 2 3 4 5 6 7 8 9 10 11 12) DO CALL %0 %%i
REM --- Die nächste Zeile entREMen, wenn 24-Stundenformat
REM --- FOR %%i IN (13 14 15 16 17 18 19 20 21 22 23) DO CALL %0 %%i
REM ...alle Minuten-Anzeigen prüfen
FOR %%i IN (00 01 02 03 04 05 06 07 08 09) DO CALL %0 hr %%i
FOR %%i IN (10 11 12 13 14 15 16 17 18 19) DO CALL %0 hr %%i
FOR %%i IN (20 21 22 23 24 25 26 27 28 29) DO CALL %0 hr %%i
FOR %%i IN (30 31 32 33 34 35 36 37 38 39) DO CALL %0 hr %%i
FOR %%i IN (40 41 42 43 44 45 46 47 48 49) DO CALL %0 hr %%i
FOR %%i IN (50 51 52 53 54 55 56 57 58 59) DO CALL %0 hr %%i
REM ...alle Sekunden-Anzeigen prüfen 
REM ---hier erweiterbar auch auf zwei Blöcke mit (00p 01p ...)
REM --- bzw 00a 01a ...59a) an Ende, um am/pm zu unterscheiden
FOR %%i IN (00 01 02 03 04 05 06 07 08 09) DO CALL %0 hr mm %%i
FOR %%i IN (10 11 12 13 14 15 16 17 18 19) DO CALL %0 hr mm %%i
FOR %%i IN (20 21 22 23 24 25 26 27 28 29) DO CALL %0 hr mm %%i
FOR %%i IN (30 31 32 33 34 35 36 37 38 39) DO CALL %0 hr mm %%i
FOR %%i IN (40 41 42 43 44 45 46 47 48 49) DO CALL %0 hr mm %%i
FOR %%i IN (50 51 52 53 54 55 56 57 58 59) DO CALL %0 hr mm %%i

REM Aufräumen, Tempdatei löschen
del %$tmp$%
:done

Der Batch läuft auch (mit angepassten SET $tmp$...SET $find$..-Werten) unter WinXP.
Hinterher stehen Stunden, Minuten, Sekunden in den Variablen %HH%, %MM$, %SS%.
Unter XP getestet:
>getWin95ENtime.bat
.....(etwas später...)
>echo %HH%--%MM%--%SS%
20--57--01

Grüße
Biber
Member: bastla
bastla May 03, 2007 at 19:50:11 (UTC)
Goto Top
@Biber

In der folgenden Zeile dürfte der Laufwerksbuchstabe verrutscht sein:
Set $find$=:\Win95\find.exe
Der Ordnung halber auch noch der Hinweis auf das fehlende "$"-Zeichen vor "=":
REM [unter WinNT++] SET $find=find

Grüße
bastla
Member: Biber
Biber May 03, 2007 at 20:09:01 (UTC)
Goto Top
THX, bastla,

sorry, Werder spielt gerade und ich wollte in der Halbzeitpause fertig werden...

Die angesprochenen Tippfehler (und zwei nicht genannte) berichtigt im Source oben.

*shittttttt.. 1:1 Gegentor...
@*$§§$§@####

Grmpf
Biber
Member: bastla
bastla May 03, 2007 at 20:15:22 (UTC)
Goto Top
@Biber

sorry, Werder spielt gerade ...
Hatte ich geahnt, wollte Dich aber lieber nicht darauf ansprechen.

Grüße
bastla

P.S.: Dann eben nur Meister ...
Member: Blutwurst-
Blutwurst- May 04, 2007 at 06:06:56 (UTC)
Goto Top
Hallo und einen schönen guten Morgen,

@all
Jesus Maria, wenn ich das geahnt hätte, was ich da für eine Lawine lostrete… *lach*
Da hallte ich wegen meinem „kleinen Problems“ arme Menschen von ihrem Privatleben ab.

DAS KANN ICH JA NIE MEHR BEI EUCH GUT MACHEN!!!

@Biber
Mega Dank an Dich, das Du dich da so reinhängst!!! Und so einen Batch-Code schreibst Du mal eben schnell während einer Halbzeitpause??? Mit so einem Code sind die Jungs von der NASA vor 30 Jahren mal eben auf den Mond geflogen ( u. da habe so an die 1300 Leute programmiert)…… Mann da ziehe ich mal echt den Hut vor Dir, Biber.


Also, ich werde jetzt die ganzen Tipps u Tricks von euch alle mal in ruhe ausprobieren und testen. Das wird wohl ein paar Tage in Anspruch nehmen, da ich leider nur sporadisch während der Arbeit dazu Zeit habe (Maschine muss laufen).

Wenn etwas nicht funktionieren sollte melde ich mich noch mal. Auf jeden Fall gebe ich dann hier noch im Forum bescheid, ob sich das Problem gelöst hat!


Mann fühlt sich hier im Forum echt gut aufgehoben!!!


Grüße Blutwurst-
Member: Blutwurst-
Blutwurst- May 09, 2007 at 15:47:00 (UTC)
Goto Top
Hallo zusammen,

so, nach einigen Testversuchen kann ich Erfolg melden!!!

Dank den Tipps von bastla und Biber konnte ich mir meine Batch so anpassen, dass alles bestens funktioniert.


Nochmals ein großes Dankeschön an alle hier.


Grüße Blutwurst-

PS. Ich werde dann mal den Beitrag als gelöst setzen wenn es ok ist…
Member: Biber
Biber May 09, 2007 at 16:10:36 (UTC)
Goto Top
Moin Blutwurst-,

danke für die Rückmeldung und das Auf-Gelöst-Setzen...
Genau so könnte das prima funktionieren hier im Forum...

Ich schliesse den Beitrag dann mal guten Gewissens.

Grüße
Biber