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

Wie bekomme ich ein Datum im Format JJJJ-M-T zu JJJJ-MM-TT innerhlab eines Batch Konstruktes

Frage Entwicklung Batch & Shell

Mitglied: Lyriker

Lyriker (Level 1) - Jetzt verbinden

14.05.2013 um 16:36 Uhr, 1515 Aufrufe, 9 Kommentare

Nach meiner Exkursion in die Batcherei:

http://www.administrator.de/frage/maschinenlogs-in-batch-aufbereiten-19 ...

01.
Date :2013.1.4 
02.
 
03.
Save Recording  : 8.5.38 Clock 
04.
 
05.
Automatik : T#4m18s 
06.
 
07.
Aktiv : T#3m27s 
08.
 
09.
Error : T#18s 
10.
 
11.
Magazine : T#51s 
12.
 
13.
Out trans. : T#0ms 
14.
 
15.
Schnitte: 16 
16.
 
17.
Teil abgeschoben: 14 
18.
 
19.
Number of Parts: 13
Habe ich folgendes Script zusammen gebustelt:

(Ich starte durch eine Run.bat und übergebe die Textdatei an diese

01.
 
02.
@echo off 
03.
setlocal EnableDelayedExpansion 
04.
 
05.
set "outfile=log.tmp" 
06.
echo %battemp% 
07.
if exist ".\abgearbeitet\*%battemp%" goto :ende 
08.
REM set "loeschen=%time:~0,2%h%time:~3,2%m%time:~6,2%s_%date%_%battemp%" 
09.
set "loeschen=%date%_%battemp%" 
10.
del r1_%battemp% 
11.
del r2_%battemp% 
12.
echo.|set /p ="Federhenn">>r2_%battemp% 
13.
for /f "usebackq tokens=1* delims=:" %%i in ("%battemp%") do ( 
14.
    set "reihe1=%%i" 
15.
    set "reihe1=!reihe1: =!" 
16.
    for /f "tokens=1,2" %%k in ("%%j") do ( 
17.
      set "reihe2=%%k" 
18.
		set "var=!reihe2!" 
19.
		set "reihe2=!var:.=-!" 
20.
		echo !reihe2! 
21.
		 
22.
      if /i "%%l"=="Clock" ( 
23.
        for /f "tokens=1-3 delims=." %%I in ("%%k") do ( 
24.
          set /a "h=10%%I, m=10%%J, s=10%%K" 
25.
          set "reihe2=!h:~-2!:!m:~-2!:!s:~-2!.0000000" 
26.
27.
      ) else if /i "!reihe2:~,2!"=="T#" ( 
28.
        for /f "tokens=1,2 delims=T#ms" %%I in ("%%k") do ( 
29.
          if "%%J"=="" ( 
30.
            set /a "m=100, s=10%%I" 
31.
          ) else ( 
32.
            set /a "m=10%%I, s=10%%J" 
33.
34.
          set "reihe2=!m:~2!" 
35.
36.
      )  
37.
	REM echo|set /p ="~!reihe2!">>r2_%battemp% 
38.
    echo|set /p ="~!reihe2!" 
39.
	 
40.
	)  
41.
  )	 
42.
FOR /F "delims=|" %%f IN (r2_%battemp%) DO echo %%f>>export/export.csv 
43.
:ende 
44.
ren "%battemp%" "%loeschen%" 
45.
if exist ".\abgearbeitet\%date%_%battemp%" goto :endezwei 
46.
xcopy /i /y /c %loeschen% abgearbeitet 
47.
:endezwei 
48.
del r1_%battemp% 
49.
del r2_%battemp% 
50.
ren "%loeschen%" "%battemp%" 
51.
 
als Endprodukt kommt dann:

01.
Federhenn~2013-1-7~14:28:51.0000000~83~30~11~40~11~161~141~95
heraus, was schon ein guter Anfang ist, wenn nicht dieses Problem wäre:

~2013-1-7 kann nicht in die Datenbank eingelesen werden (zumindest nicht von bcp) das müsste 2013-01-07 sein. (also JJJJ-M-T zu JJJJ-MM-TT)

Da es aber auch ein Datum gibt das 2013-11-1 gegen könnte oder sogar 2013-11-11 Bin ich etwas ratlos, wie ich es hin bekomme das ganze um zu pfriemeln.

Für Hilfe wäre ich dankbar, vielleicht komme ich ja auch noch selbst im laufe des Abends drauf.

Danke schon im voraus.
Mitglied: MrNetman
14.05.2013 um 17:21 Uhr
Datum kann man so lesen und schreiben:

Datum
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%

echo %jahr%%monat%%tag%

erzeugt aus der Eingabe 21.09.2005 dann z.B.:20050921

Wenn es eine andere Variable ist, dann genügt das Zählen der Einträge: hier für den Monat die Stelle 7, 2 Zeichen lang.

hoffe, das hilft.
Anonsten sind hier im Forum ganz viele Beispiele mit dem Datum über die Suchfunktion erreichbar.

GRuß
Netman
Bitte warten ..
Mitglied: bastla
14.05.2013, aktualisiert um 17:46 Uhr
Hallo Lyriker!

Orientiere Dich an den Zeilen 22 bis 26, wobei für Zeile 22 in diesem Fall
if /i "%%i"=="Date " (
zu verwenden wäre ...

Grüße
bastla
Bitte warten ..
Mitglied: Penny.Cilin
14.05.2013, aktualisiert um 20:49 Uhr
Zitat von MrNetman:
Datum kann man so lesen und schreiben:

Datum
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%

oder

set jahr=%date:~6,4%
set monat=%date:~3,2%
set tag=%date:~0,2%

@MrNetman
Deine variante kannte ich noch nicht.


Gruss Penny.
Bitte warten ..
Mitglied: bastla
14.05.2013 um 22:11 Uhr
@ Penny.Cilin
Deine variante kannte ich noch nicht.
Das ist die Sicherheits-Variante, für den Fall, dass %date% auch den Wochentag (war zB Default bei W2000) mitliefert, also etwa
Di 14.05.2013
Grüße
bastla
Bitte warten ..
Mitglied: Lyriker
15.05.2013, aktualisiert um 09:01 Uhr
Hallöchen.. jupp das mit dem Datum würde ja passen, wenn mir als Datumwerte immer das gleiche geliefert wird:

aber es komtm vor das ich

2013-1-1 also JJJJ-M-T

oder

2013-11-1 also JJJJ-MM-T

oder

2013-1-11 also JJJJ.M.TT

oder

2013-11-11 also JJJJ-MM-TT (was ich ja an sich bei allem haben will)

habe.. wenn ich die Zeichen zähle kommt bei jedem Fall etwas anderes raus?! ....

Danke bastla, habe die Frage wohl zu allgemein gestellt, Dein Ansatz stimmt natürlich ;)

Mir gings in dem Fall wirklich danach, die verschiedenen Fälle ab zu fangen.

@netman, ich teste das mal aus, aber was mache ich wenn ich 2013-1-11 (JJJJ.M.TT habe?.... oder 2013-11-1 JJJJ.MM.T)?
Bitte warten ..
Mitglied: MrNetman
15.05.2013, aktualisiert um 09:48 Uhr
Wenn es eine gewisse Konsistenz gibt, wie im Beispiel vorher in etwa erkennbar, dann kannst du mit der Suchfunktion arbeiten.
Jahr bis zum ersten Strich
Monat nach dem ersten bis zum zweiten Strich ....
Oder zählen, das gezählte (Jahr) "löschen" und als nächsten Schritt den Monat dran nehmen und diesen Wert verändern. Das steht in jedem Fall kein Tag drin. Den Tag von rechts zählen klappt auch (das "-" Zeichen davor)
Für leichtere Verarbeitungszwecke würde ich die Ergebnisse von Monat und Tag aber auf jeden Fall zweistellig machen.

lg
Netman
Bitte warten ..
Mitglied: Endoro
15.05.2013, aktualisiert um 10:27 Uhr
Hallo Lyriker,

Zitat von Lyriker:
aber was mache ich wenn ich 2013-1-11 (JJJJ.M.TT habe?.... oder 2013-11-1 JJJJ.MM.T)?

Bei den zweiziffrigen könntest du schauen, ob eins über 12 geht.
Ansonsten würfeln.

Gruss!
Bitte warten ..
Mitglied: Lyriker
16.05.2013, aktualisiert um 16:39 Uhr
Und noch immer bin ich am murksen...

irgendwie schaffe ich das nicht.

eine dritte Klausel (zu der if & else if) bekomme ich nicht rein, dann fängt das total an zu zicken...

hatte mir überlegt, den gesamten teil in drei token auf zu lösen und jeden der drei zu berechnen, um das dann wieder zusammen zu setzen und in die Datei zu schreiben.

hier mal ein Konstrukt , aber irgendwie bin ich grad mitz der for schleife zu blöd das in drei token aufzulösen und dann durch die if bedingung zu jagen (wenn kleiner 10 dann mache eine 0 davor) , aber irgdnwie regaiert die if klausel null darauf.

Könntets euch bittschee nochmal ansehen? ... (grad gestresst zwischen einer neuen SQL Abfrage und dem Kundensupport am Telefon sitze ... )

(bitte die Hilfsausgaben und pause übersehen ;))

01.
@echo off 
02.
setlocal EnableDelayedExpansion 
03.
 
04.
set "outfile=log.tmp" 
05.
echo %battemp% 
06.
if exist ".\abgearbeitet\*%battemp%" goto :ende 
07.
REM set "loeschen=%time:~0,2%h%time:~3,2%m%time:~6,2%s_%date%_%battemp%" 
08.
set "loeschen=%date%_%battemp%" 
09.
del r1_%battemp% 
10.
del r2_%battemp% 
11.
echo.|set /p ="Federhenn">>r2_%battemp% 
12.
for /f "usebackq tokens=1* delims=:" %%i in ("%battemp%") do ( 
13.
    set "reihe1=%%i" 
14.
    set "reihe1=!reihe1: =!" 
15.
    for /f "tokens=1,2" %%k in ("%%j") do ( 
16.
        set "reihe2=%%k" 
17.
		if /i "!reihe1!"=="Date" ( 
18.
			echo !reihe2! sachmal 
19.
			for /f "tokens=1,2,3 delims=." %%u in ( "!reihe2!" ) do ( 
20.
				echo %%u 
21.
				echo %%v 
22.
				echo %%w 
23.
				set /a tag=%%w 
24.
				set /a monat=%%v 
25.
				set /a jahr=%%u 
26.
				set /a neun=9 
27.
				echo !tag! 
28.
				echo !monat! 
29.
				echo !jahr! 
30.
				rem echo %%x 
31.
				rem echo %%y 
32.
				rem echo %%z 
33.
				if "%monat%" LEQ "9" ( 
34.
					echo %%u 
35.
					echo %%v 
36.
					echo %%w 
37.
					rem echo %%x 
38.
					rem echo %%y 
39.
					rem echo %%z 
40.
					set "monat1=!monat!" 
41.
					rem set "reihe2=!var:.=-!" 
42.
					rem set "var=!reihe2!" 
43.
						set "monat1=!monat1:1=01!" 
44.
						set "monat1=!monat1:2=02!" 
45.
						set "monat1=!monat1:3=03!" 
46.
						set "monat1=!monat1:4=04!" 
47.
						set "monat1=!monat1:5=05!" 
48.
						set "monat1=!monat1:6=06!" 
49.
						set "monat1=!monat1:7=07!" 
50.
						set "monat1=!monat1:8=08!" 
51.
						set "monat1=!monat1:9=09!" 
52.
					echo !monat1! 
53.
					set "reihe2=%%u-!monat1!-!tag!" 
54.
					echo ergebnis !reihe2! 
55.
					pause 
56.
				)  
57.
				if "%tag%" LEQ "9" ( 
58.
					echo %%u 
59.
					echo %%v 
60.
					echo %%w 
61.
					rem echo %%x 
62.
					rem echo %%y 
63.
					rem echo %%z 
64.
					set "tag1=!tag!" 
65.
					rem set "reihe2=!var:.=-!" 
66.
					rem set "var=!reihe2!" 
67.
						set "tag1=!tag1:1=01!" 
68.
						set "tag1=!tag1:2=02!" 
69.
						set "tag1=!tag1:3=03!" 
70.
						set "tag1=!tag1:4=04!" 
71.
						set "tag1=!tag1:5=05!" 
72.
						set "tag1=!tag1:6=06!" 
73.
						set "tag1=!tag1:7=07!" 
74.
						set "tag1=!tag1:8=08!" 
75.
						set "tag1=!tag1:9=09!" 
76.
					 
77.
					echo !tag1! 
78.
					set "reihe2=%%u-!monat1!-!tag1!" 
79.
					echo ergebnis !reihe2! 
80.
					pause 
81.
				)  
82.
				 
83.
84.
		 
85.
86.
		 
87.
		if /i "%%l"=="Clock" ( 
88.
			for /f "tokens=1-3 delims=." %%I in ("%%k") do ( 
89.
			set /a "h=10%%I, m=10%%J, s=10%%K" 
90.
			set "reihe2=!h:~-2!:!m:~-2!:!s:~-2!.0000000" 
91.
92.
      ) else if /i "!reihe2:~,2!"=="T#" ( 
93.
			for /f "tokens=1,2 delims=T#ms" %%I in ("%%k") do ( 
94.
			if "%%J"=="" ( 
95.
				set /a "m=100, s=10%%I" 
96.
			) else ( 
97.
				set /a "m=10%%I, s=10%%J" 
98.
99.
				set "reihe2=!m:~2!" 
100.
101.
      )  
102.
	echo|set /p ="~!reihe2!">>r2_%battemp% 
103.
    REM echo|set /p ="~!reihe2!" 
104.
	 
105.
	)  
106.
  )	 
107.
FOR /F "delims=|" %%f IN (r2_%battemp%) DO echo %%f>>export/export.csv 
108.
:ende 
109.
ren "%battemp%" "%loeschen%" 
110.
if exist ".\abgearbeitet\%date%_%battemp%" goto :endezwei 
111.
xcopy /i /y /c %loeschen% abgearbeitet 
112.
:endezwei 
113.
del r1_%battemp% 
114.
del r2_%battemp% 
115.
ren "%loeschen%" "%battemp%"
Ergebnisbeispiel: Federhenn~2013-01-010~14:36:32.0000000~342~256~434~83~9~1267~1095~918

könnt aus der Haut fahren... ^^
Bitte warten ..
Mitglied: Lyriker
17.05.2013, aktualisiert um 12:28 Uhr
Ok falls jemand Interesse hat, sowas mal selbst zu bauen, hier die funktionierende Lösung:

01.
 
02.
@echo off 
03.
setlocal EnableDelayedExpansion 
04.
 
05.
set "outfile=log.tmp" 
06.
echo %battemp% 
07.
if exist ".\abgearbeitet\*%battemp%" goto :ende 
08.
REM set "loeschen=%time:~0,2%h%time:~3,2%m%time:~6,2%s_%date%_%battemp%" 
09.
set "loeschen=%date%_%battemp%" 
10.
del r1_%battemp% 
11.
del r2_%battemp% 
12.
echo.|set /p ="Federhenn">>r2_%battemp% 
13.
for /f "usebackq tokens=1* delims=:" %%i in ("%battemp%") do ( 
14.
    set "reihe1=%%i" 
15.
    set "reihe1=!reihe1: =!" 
16.
    for /f "tokens=1,2" %%k in ("%%j") do ( 
17.
        set "reihe2=%%k" 
18.
		if /i "!reihe1!"=="Date" ( 
19.
			echo !reihe2! sachmal 
20.
			for /f "tokens=1,2,3 delims=." %%u in ( "!reihe2!" ) do ( 
21.
				rem echo %%u 
22.
				rem echo %%v 
23.
				rem echo %%w 
24.
				rem set /a S=%%w - 9 
25.
				rem echo Tag weniger 9 ist !S! 
26.
				set /a tagberechnen=%%w - 9 
27.
				set /a monatberechnen=%%v - 9 
28.
				set /a jahrberechnen=%%u - 9 
29.
				set /a tag=%%w 
30.
				set /a monat=%%v 
31.
				set /a jahr=%%u 
32.
				rem echo !tag! 
33.
				rem echo !monat! 
34.
				rem echo !jahr! 
35.
				rem set /a !tag!=!tag! - 9 
36.
				rem echo Tag !tag! 
37.
				rem echo Monat !monat! 
38.
				rem echo Jahr !jahr! 
39.
				rem echo %%x 
40.
				rem echo %%y 
41.
				rem echo %%z 
42.
				if !monatberechnen! LEQ 0 ( 
43.
					rem echo monat zahl !monatberechnen! 
44.
					rem echo wenn %%u 
45.
					rem echo wenn %%v 
46.
					rem echo wenn %%w 
47.
					rem echo wenn %%x 
48.
					rem echo wenn %%y 
49.
					rem echo wenn %%z 
50.
					rem echo wenn !monat! 
51.
					set "monat1=!monat!" 
52.
					rem set "reihe2=!var:.=-!" 
53.
					rem set "var=!reihe2!" 
54.
						set "monat1=!monat1:1=01!" 
55.
						set "monat1=!monat1:2=02!" 
56.
						set "monat1=!monat1:3=03!" 
57.
						set "monat1=!monat1:4=04!" 
58.
						set "monat1=!monat1:5=05!" 
59.
						set "monat1=!monat1:6=06!" 
60.
						set "monat1=!monat1:7=07!" 
61.
						set "monat1=!monat1:8=08!" 
62.
						set "monat1=!monat1:9=09!" 
63.
					rem echo !monat1! 
64.
					set "reihe2=%%u-!monat1!-!tag!" 
65.
					rem echo ergebnis !reihe2! 
66.
					rem pause 
67.
				) else ( 
68.
				set monat1=!monat! 
69.
				rem echo ansonsten monat !monat1! 
70.
				rem pause 
71.
72.
				if !tagberechnen! LEQ 0 ( 
73.
				 rem echo tag zahl !tagberechnen! 
74.
					rem echo %%u 
75.
					rem echo %%v 
76.
					rem echo %%w 
77.
					rem echo %%x 
78.
					rem echo %%y 
79.
					rem echo %%z 
80.
					set "tag1=!tag!" 
81.
					rem set "reihe2=!var:.=-!" 
82.
					rem set "var=!reihe2!" 
83.
					set "tag1=!tag1:1=01!" 
84.
					set "tag1=!tag1:2=02!" 
85.
					set "tag1=!tag1:3=03!" 
86.
					set "tag1=!tag1:4=04!" 
87.
					set "tag1=!tag1:5=05!" 
88.
					set "tag1=!tag1:6=06!" 
89.
					set "tag1=!tag1:7=07!" 
90.
					set "tag1=!tag1:8=08!" 
91.
					set "tag1=!tag1:9=09!" 
92.
					rem echo 0 davor tag !tag1! 
93.
					set "reihe2=%%u-!monat1!-!tag1!" 
94.
					rem echo ergebnis !reihe2! 
95.
					rem pause 
96.
				) else ( 
97.
					set "reihe2=%%u-!monat1!-!tag!" 
98.
					rem echo ansonsten monat !monat1! 
99.
					rem echo ansonsten monat !tag! 
100.
					rem echo ergebnis !reihe2! 
101.
					rem pause 
102.
103.
				 
104.
105.
		 
106.
107.
		 
108.
		if /i "%%l"=="Clock" ( 
109.
			for /f "tokens=1-3 delims=." %%I in ("%%k") do ( 
110.
			set /a "h=10%%I, m=10%%J, s=10%%K" 
111.
			set "reihe2=!h:~-2!:!m:~-2!:!s:~-2!.0000000" 
112.
113.
      ) else if /i "!reihe2:~,2!"=="T#" ( 
114.
			for /f "tokens=1,2 delims=T#ms" %%I in ("%%k") do ( 
115.
			if "%%J"=="" ( 
116.
				set /a "m=100, s=10%%I" 
117.
			) else ( 
118.
				set /a "m=10%%I, s=10%%J" 
119.
120.
				set "reihe2=!m:~2!" 
121.
122.
      )  
123.
	echo|set /p ="~!reihe2!">>r2_%battemp% 
124.
    REM echo|set /p ="~!reihe2!" 
125.
	 
126.
	)  
127.
  )	 
128.
FOR /F "delims=|" %%f IN (r2_%battemp%) DO echo %%f>>export/export.csv 
129.
:ende 
130.
ren "%battemp%" "%loeschen%" 
131.
if exist ".\abgearbeitet\%date%_%battemp%" goto :endezwei 
132.
xcopy /i /y /c %loeschen% abgearbeitet 
133.
:endezwei 
134.
del r1_%battemp% 
135.
del r2_%battemp% 
136.
ren "%loeschen%" "%battemp%"

Ergibt nach oberer Vorlage dann geschirbeen in die Textdatei:

Federhenn~2013-01-04~08:05:38.0000000~4~3~0~0~0~16~14~13
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

Windows 10
gelöst Windows 10 - Datum und Zeitfehler bei Update (3)

Frage von swisstom zum Thema Windows 10 ...

Windows Userverwaltung
gelöst Datum einer Gruppenmitgliedschaft (1)

Frage von slansky zum Thema Windows Userverwaltung ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...