Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Problem bei Zeit Variable in Batch unter engl. Win95

Frage Entwicklung Batch & Shell

Mitglied: Blutwurst-

Blutwurst- (Level 1) - Jetzt verbinden

03.05.2007, aktualisiert 09.05.2007, 5023 Aufrufe, 14 Kommentare

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-
Mitglied: geTuemII
03.05.2007 um 13:23 Uhr
Da der Biber gerade nicht online ist, hier schon mal ein Tutorial zum Selbstudium. Vielleicht kommst du damit ja schon klar.

geTuemII
Bitte warten ..
Mitglied: bastla
03.05.2007 um 14:51 Uhr
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:
01.
echo. | time | find "%key%" | sed s/[:.]/-/g > }{.bat
Damit werden alle ":" und "." in "-" umgewandelt (oder zB mit
01.
... | sed s/[:.]//g
einfach durch Nichts ersetzt, also entfernt).
Letztes Beispiel:
01.
... | sed s/[^^0-9]//g
entfernt alle Zeichen außer den Ziffern ("0" - "9").

Grüße
bastla
Bitte warten ..
Mitglied: Blutwurst-
03.05.2007 um 16:31 Uhr
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-
Bitte warten ..
Mitglied: geTuemII
03.05.2007 um 17:14 Uhr
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. Das Tut hat übrigens auch noch einen ersten und einen zweiten Teil. ...und das querlesen vorhandener Beiträge ist auch lehrreich.

geTuemII
Bitte warten ..
Mitglied: bastla
03.05.2007 um 17:25 Uhr
@geTuemII

Du deckst den nahrhaften Kollegen aber ordentlich ein ...

Warum ich nicht reflexartig (und damit alleine heute schon zum zweiten Mal) auf Biber's Tutorial verwiesen habe, ist folgende Zeile seiner "GetAllDateTimeInfos.bat":
01.
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
01.
set xtime=%time:~0,8% 
02.
echo %xtime::=-%
zu verwenden ...

@Blutwurst-
Die Tutorials anzuschauen schadet aber trotzdem nicht.

Grüße
bastla
Bitte warten ..
Mitglied: geTuemII
03.05.2007 um 17:32 Uhr
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
Bitte warten ..
Mitglied: bastla
03.05.2007 um 17:37 Uhr
Geht's Dir also auch so? Endlich fühle ich mich verstanden ...

bastla
Bitte warten ..
Mitglied: Biber
03.05.2007 um 20:59 Uhr
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?).

01.
@REM ---------snipp GetWin95ENTime.bat Placed in the Public Domain Biber 2007 
02.
@echo off 
03.
REM ---Time-Format möge sein 08:14:56.03p  
04.
REM ---ab hier anpassen!!!!!!!!!!!!!! 
05.
Set $tmp$=c:\temp\timetmp.txt 
06.
Set $find$=c:\Win95\find.exe 
07.
REM [unter WinNT++] Set $tmp$=%temp%\timetmp.txt 
08.
REM [unter WinNT++] SET $find$=find 
09.
REM ---bis hier anpassen!!!!!!!!!!!!! 
10.
REM Mit welchem Parameter/für welche Phase ist der Batch gerufen... 
11.
if "%1"=="" goto Init 
12.
if "%2"=="" goto GetHours 
13.
if "%3"=="" goto GetMinutes 
14.
 
15.
REM Sekunden extrahieren Time-Format möge sein 08:14:56.03p  
16.
%$find$% ":%3." %$tmp$% > nul 
17.
REM ---ACHTUNG: bei Dt-Datumsformat ist es ein Komma statt des Punkts!! 
18.
REM [Dt] %$find$% ":%3," %$tmp$% > nul 
19.
 
20.
if not errorlevel==1 if errorlevel==0 set SS=%3 
21.
goto done 
22.
 
23.
REM Hier die Minuten rausfieseln:Time-Format 08:14:56.03p  
24.
:GetMinutes 
25.
%$find$% ":%2:" %$tmp$% >nul 
26.
if not errorlevel==1 if errorlevel==0 set MM=%2 
27.
goto done 
28.
 
29.
REM ...Stunden rausdröseln ...die haben ein Leerzeichen vor der Ziffer.. 
30.
:GetHours 
31.
%$find$% " %1:" %$tmp$% >nul 
32.
if not errorlevel==1 if errorlevel==0 set HH=%1 
33.
goto done 
34.
 
35.
REM Die Zeit mit dem Befehl "echo.|time" in eine Datei schreiben 
36.
REM Die brauchen wir nämlich so ein- oder zweimal in dem Ablauf 
37.
:Init 
38.
echo.|time > %$tmp$% 
39.
 
40.
REM Für alle Zeit-Teile [Stunden, Minuten, Sekunden]  
41.
REM die Alternativen durchflöhen... hilft ja nix... 
42.
REM Dafür brauchen wir halt diese Dummy-Parameter "x",  
43.
REM um Stunden als Stunden, Minuten als Minuten etc zu erkennen. 
44.
FOR %%i IN (0 1 2 3 4 5 6 7 8 9 10 11 12) DO CALL %0 %%i 
45.
REM --- Die nächste Zeile entREMen, wenn 24-Stundenformat 
46.
REM --- FOR %%i IN (13 14 15 16 17 18 19 20 21 22 23) DO CALL %0 %%i 
47.
REM ...alle Minuten-Anzeigen prüfen 
48.
FOR %%i IN (00 01 02 03 04 05 06 07 08 09) DO CALL %0 hr %%i 
49.
FOR %%i IN (10 11 12 13 14 15 16 17 18 19) DO CALL %0 hr %%i 
50.
FOR %%i IN (20 21 22 23 24 25 26 27 28 29) DO CALL %0 hr %%i 
51.
FOR %%i IN (30 31 32 33 34 35 36 37 38 39) DO CALL %0 hr %%i 
52.
FOR %%i IN (40 41 42 43 44 45 46 47 48 49) DO CALL %0 hr %%i 
53.
FOR %%i IN (50 51 52 53 54 55 56 57 58 59) DO CALL %0 hr %%i 
54.
REM ...alle Sekunden-Anzeigen prüfen  
55.
REM ---hier erweiterbar auch auf zwei Blöcke mit (00p 01p ...) 
56.
REM --- bzw 00a 01a ...59a) an Ende, um am/pm zu unterscheiden 
57.
FOR %%i IN (00 01 02 03 04 05 06 07 08 09) DO CALL %0 hr mm %%i 
58.
FOR %%i IN (10 11 12 13 14 15 16 17 18 19) DO CALL %0 hr mm %%i 
59.
FOR %%i IN (20 21 22 23 24 25 26 27 28 29) DO CALL %0 hr mm %%i 
60.
FOR %%i IN (30 31 32 33 34 35 36 37 38 39) DO CALL %0 hr mm %%i 
61.
FOR %%i IN (40 41 42 43 44 45 46 47 48 49) DO CALL %0 hr mm %%i 
62.
FOR %%i IN (50 51 52 53 54 55 56 57 58 59) DO CALL %0 hr mm %%i 
63.
 
64.
REM Aufräumen, Tempdatei löschen 
65.
del %$tmp$% 
66.
: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:
01.
>getWin95ENtime.bat 
02.
.....(etwas später...) 
03.
>echo %HH%--%MM%--%SS% 
04.
20--57--01
Grüße
Biber
Bitte warten ..
Mitglied: bastla
03.05.2007 um 21:50 Uhr
@Biber

In der folgenden Zeile dürfte der Laufwerksbuchstabe verrutscht sein:
01.
Set $find$=:\Win95\find.exe
Der Ordnung halber auch noch der Hinweis auf das fehlende "$"-Zeichen vor "=":
01.
REM [unter WinNT++] SET $find=find
Grüße
bastla
Bitte warten ..
Mitglied: Biber
03.05.2007 um 22:09 Uhr
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
Bitte warten ..
Mitglied: bastla
03.05.2007 um 22:15 Uhr
@Biber

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

Grüße
bastla

P.S.: Dann eben nur Meister ...
Bitte warten ..
Mitglied: Blutwurst-
04.05.2007 um 08:06 Uhr
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-
Bitte warten ..
Mitglied: Blutwurst-
09.05.2007 um 17:47 Uhr
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…
Bitte warten ..
Mitglied: Biber
09.05.2007 um 18:10 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Batch & Shell
gelöst Grosses Variablen Problem ( Batch) (30)

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...