bertel84
Goto Top

Datensicherung probleme beim Ausführen einer batch Datei unter NT

Hallo,

erstmal ein schönen guten Tag in die Runde. Dies ist mein erster beitrag in diesem Forum weil ich trotz intensiver Suche keine passende Lösung zu meinem Problem finden konnte.

Also folgende Situation:

Ich habe zur Datensicherung eine batchdatei geschrieben, welche auf einem Windows 2000 Recher auch super funktioniert und gestetet wurde.

Nun wollte ich die fertige Datei auf die Arbeitsstation aufspielen und dort auch verwenden. Problem ist, das auf dieser Arbeitsstation Windows NT drauf ist, und somit die Batch datei nicht wie vorher gewohnt durchläuft.

Also klar ausgedrückt:

Unter NT erstellt er den Sicherungs Ordner nicht wie bei Windows 2000 mit der datumsvariablen sondern meckert nur rum, das der ordner nicht angelegt werden kann.

Hier mal die batch, wie ich sie bis jetzt habe:
@ECHO OFF

CLS
REM ------------------------------------------------------------

REM Name:  Datensicherung.BAT

REM Autor: T.H.

REM Datum: 06. Juli 2007

REM ------------------------------------------------------------
ECHO Die Datensicherung wird gestartet .. 
ECHO.
ECHO Diese Datei darf nicht vor Beendigung geschlossen werden !

ECHO.

ECHO.

PAUSE

ECHO.

ECHO Das Netzlaufwerk wird eingebunden..

net use S: \\DBAG-QS-SVR1\Datensicherung_Aura kennwort /user:Administrator 

ECHO Abgeschlossen. 

ECHO.

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

XCOPY D:\AURADatenWS\Messungen\*.* S:\DatensicherungAura_vom_%jahr%_%monat%_%tag%\*.* /E /S /H

ECHO.

XCOPY D:\AURADatenWS\Messungen\*.* D:\Datensicherung_AURA\DatensicherungAura_vom_%jahr%_%monat%_%tag%\*.* /E /S /H

ECHO.

rmdir /s /q D:\AURADatenWS\Messungen\ 

ECHO.

MD D:\AURADatenWS\Messungen\ 

MOVE D:\Datensicherung_AURA\DatensicherungAura_vom_%jahr%_%monat%_%tag%\Messauswahl.par D:\AURADatenWS\Messungen\

MOVE D:\Datensicherung_AURA\DatensicherungAura_vom_%jahr%_%monat%_%tag%\Messliste.pls D:\AURADatenWS\Messungen\

ECHO.

ECHO Netzlaufwerk wird getrennt..

net use S: /del

ECHO Netzlaufwerk wurde getrennt.

ECHO.

ECHO Die Datensicherung wurde abgeschlossen ...

PAUSE
REM -------------------------- E O F ---------------------------

Ich weiß das ein paar ECHO's zuviel drin sind, aber das habe ich nur für mich zur Übersicht mit drin. ;)

Kann mir jemand dabei helfen die Datei auf Windows NT umzuschreiben ? Ich habe leider nur grundkentnisse in Programmiersprachen.. Also für eine kleine Batch reicht es noch gerade so.. ^^

schon mal vielen dank für die mühen..

mfg
Bertel84

Content-Key: 63413

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

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

Member: Markx
Markx Jul 10, 2007 at 08:08:18 (UTC)
Goto Top
hier ein Lösungsansatz den ich hier aus dem Forum habe:

(benutze das so nur noch in meinen Scripten, ist echt Gold wert.. das war mal glaub in nem Tutorial hier gepostet worden..)
:: Ermittelt Datums/Zeitvariable aus Systemdatum/Systemzeit OHNE REG-Abfragen
:: Einschränkung: Sollte schon NT oder höher sein, Deshalb die nächte Zeile
IF NOT "%OS%"=="Windows_NT" echo "%0 läuft nur unter WinNT oder höher. Sorry." && GOTO :eof  
SET "AllDateTimeVars=DateOrder KW DoW DoY DD TT MM JJ YY hh min ss ms"  
FOR %%i in (%AllDateTimeVars%) do @if defined %%i set %%i=
:: Datum OHNE Wochentag. Zwischenschritt mit MyDateOhneDoW
Set MyDateOhneDoW=%date%
:: Die nächste Code-Zeile ändert nur dann etwas, wenn ein Wochentag mitgeliefert wird.
:: Aus "Sa 01.10.2005" wird dann "01.10.2005" 
FOR /F "tokens=2" %%i in ("%MyDateOhneDoW%") do Set MyDateOhneDoW=%%i  
FOR /F "tokens=1-7 delims=:/.-, " %%i in ("%MyDateOhneDow% %time%") do (  
For /f "tokens=2-4 delims=/-,() skip=1" %%a in ('echo.^|date') do (  
for %%@ in ("DateOrder=%%a-%%b-%%c" "%%a=%%i" "%%b=%%j" "%%c=%%k" "hh=%%l" "min=%%m" "ss=%%n" "ms=%%o") do set %%@  
)
)
:: Zusammenbauen Zeitstempel
SET myDateTime=%JJ%_%MM%_%TT%_%hh%_%min%
SET myDate=%JJ%_%MM%_%TT%
SET myTime=%hh%_%min%
Bräuchtest das nur am Anfang deines bisherigen Scriptes einfügen und die Variablen in den XCOPY und MOVE Anweisungen anpassen..
Member: Bertel84
Bertel84 Jul 10, 2007 at 09:04:10 (UTC)
Goto Top
Hallo,

schonmal vielen Dank für die schnelle Antwort..

aber welche Variable muss ich den nun einfügen ? das %myDate% ?? (ich will ja nur das Datum im Format JJ mm tt)

Batch:
REM ------------------------------------------------------------

REM Name:  Datensicherung.BAT

REM Autor: T.H.

REM Datum: 06. Juli 2007

REM ------------------------------------------------------------
ECHO Die Datensicherung wird gestartet .. 
ECHO.
ECHO Diese Datei darf nicht vor Beendigung geschlossen werden !

ECHO.

ECHO.

PAUSE

ECHO.

ECHO Das Netzlaufwerk wird eingebunden..

net use S: \\DBAG-QS-SVR1\Datensicherung_Aura kennwort /user:Administrator 

ECHO Abgeschlossen. 

ECHO.

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

:: Ermittelt Datums/Zeitvariable aus Systemdatum/Systemzeit OHNE REG-Abfragen
:: Einschränkung: Sollte schon NT oder höher sein, Deshalb die nächte Zeile
IF NOT "%OS%"=="Windows_NT" echo "%0 läuft nur unter WinNT oder höher. Sorry." && GOTO :eof  
SET "AllDateTimeVars=DateOrder KW DoW DoY DD TT MM JJ YY hh min ss ms"  
FOR %%i in (%AllDateTimeVars%) do @if defined %%i set %%i=
:: Datum OHNE Wochentag. Zwischenschritt mit MyDateOhneDoW
Set MyDateOhneDoW=%date%
:: Die nächste Code-Zeile ändert nur dann etwas, wenn ein Wochentag mitgeliefert wird.
:: Aus "Sa 01.10.2005" wird dann "01.10.2005" 
FOR /F "tokens=2" %%i in ("%MyDateOhneDoW%") do Set MyDateOhneDoW=%%i  
FOR /F "tokens=1-7 delims=:/.-, " %%i in ("%MyDateOhneDow% %time%") do (  
For /f "tokens=2-4 delims=/-,() skip=1" %%a in ('echo.^|date') do (  
for %%@ in ("DateOrder=%%a-%%b-%%c" "%%a=%%i" "%%b=%%j" "%%c=%%k" "hh=%%l" "min=%%m" "ss=%%n" "ms=%%o") do set %%@  
)
)
:: Zusammenbauen Zeitstempel
SET myDateTime=%JJ%_%MM%_%TT%_%hh%_%min%
SET myDate=%JJ%_%MM%_%TT%
SET myTime=%hh%_%min%


XCOPY D:\AURADatenWS\Messungen\*.* S:\DatensicherungAura_vom_%myDate%\*.* /E /S /H

ECHO.

XCOPY D:\AURADatenWS\Messungen\*.* D:\Datensicherung_AURA\DatensicherungAura_vom_%myDate%\*.* /E /S /H

ECHO.

ECHO Verzeichnis "Messungen" wird nun geleert.. Fortfuehren ?  

ECHO.

PAUSE

rmdir /s /q D:\AURADatenWS\Messungen\ 

ECHO.

MD D:\AURADatenWS\Messungen\ 

MOVE D:\Datensicherung_AURA\DatensicherungAura_vom_%myDate%\Messauswahl.par D:\AURADatenWS\Messungen\

MOVE D:\Datensicherung_AURA\DatensicherungAura_vom_%myDate%\Messliste.pls D:\AURADatenWS\Messungen\

ECHO.

ECHO Netzlaufwerk wird getrennt..

net use S: /del

ECHO Netzlaufwerk wurde getrennt.

ECHO.

ECHO Die Datensicherung wurde abgeschlossen ...

PAUSE
REM -------------------------- E O F ---------------------------

Wenn ich es so eingebe erstellt er mir zwar den Ordner, doch ohne datum..
Der Ordner heißt dann nur "DatensicherungAura_vom___"

Irgendwas hab ich wohl falsch gemacht.... face-sad
Member: Markx
Markx Jul 10, 2007 at 09:31:56 (UTC)
Goto Top
die 3 Zeilen musste wohl rausnehmen:

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

und probiere mal mit testhalber den Scriptteil von "mir" (siehe erste Antwort) als test.bat und unten drunter gib dir die Variablen aufm Bildschirm aus.. also
:: Ermittelt Datums/Zeitvariable aus Systemdatum/Systemzeit OHNE REG-Abfragen
:: Einschränkung: Sollte schon NT oder höher sein, Deshalb die nächte Zeile
IF NOT "%OS%"=="Windows_NT" echo "%0 läuft nur unter WinNT oder höher. Sorry." && GOTO :eof  
SET "AllDateTimeVars=DateOrder KW DoW DoY DD TT MM JJ YY hh min ss ms"  
FOR %%i in (%AllDateTimeVars%) do @if defined %%i set %%i=
:: Datum OHNE Wochentag. Zwischenschritt mit MyDateOhneDoW
Set MyDateOhneDoW=%date%
:: Die nächste Code-Zeile ändert nur dann etwas, wenn ein Wochentag mitgeliefert wird.
:: Aus "Sa 01.10.2005" wird dann "01.10.2005" 
FOR /F "tokens=2" %%i in ("%MyDateOhneDoW%") do Set MyDateOhneDoW=%%i  
FOR /F "tokens=1-7 delims=:/.-, " %%i in ("%MyDateOhneDow% %time%") do (  
For /f "tokens=2-4 delims=/-,() skip=1" %%a in ('echo.^|date') do (  
for %%@ in ("DateOrder=%%a-%%b-%%c" "%%a=%%i" "%%b=%%j" "%%c=%%k" "hh=%%l" "min=%%m" "ss=%%n" "ms=%%o") do set %%@  
)
)
:: Zusammenbauen Zeitstempel
SET myDateTime=%JJ%_%MM%_%TT%_%hh%_%min%
SET myDate=%JJ%_%MM%_%TT%
SET myTime=%hh%_%min%

ECHO %myDate%
PAUSE
EXIT
.. damit kannste erstmal prüfen, ob das Datum richtig zusammengebaut wird..
Member: Bertel84
Bertel84 Jul 10, 2007 at 09:39:13 (UTC)
Goto Top
Ich habe es gerade nochmal getestet unten am Rechner.. Das Script funktioniert so tadellos. Auf dem 2000er Rechner in meinem Büro klappt es ja auch alles, nur wie gesagt auf den Windows NT 4 Rechner in der Werkstatt nicht..

Es kommt mir dort so vor, als würde er die befehle %mydate% usw dort einfach ignorieren...

Sind vielleicht andere zeichen als die % zeichen notwendig ??
Member: Markx
Markx Jul 10, 2007 at 09:55:18 (UTC)
Goto Top
also andere Zeichen sind sicher nicht notwendig.. ich vermute ganz stark, dass die Ursache das vom NT4 zurückgelieferte Datumsformat ist.. habe seit vielen Jahren kein NT4 aktiv "in Händen" gehabt.. insofern das Script nie direkt auf NT4 testen können (mein Hintergrund war der Formatunterschied von 2k, XP und 2k3).. sorry..
Member: Bertel84
Bertel84 Jul 10, 2007 at 09:58:22 (UTC)
Goto Top
gibts den eine möglichkeit, das datum das Win NT auswirft direkt zu nutzen ohne irgendeine form begrenzung (zB jj mm tt) ?

Die Form des datums ist mir auch eher nebensächlich.. es geht nur darum, _das_ ein datum mit angehangen wird..

nur mit %date% oder so wirds ja sicher nicht klappen, oder ? ^^
Member: Biber
Biber Jul 10, 2007 at 22:18:54 (UTC)
Goto Top
Moin Bertel84,

Klar, "nur mit %date% oder so" würden wir es auch hinbekommen, aber wenn Du einen Moment Zeit hast, würde wir gern erst das Problem eingrenzen, bevor wir es ignorieren oder umgehen.

Poste doch bitte einmal das Datum, das Dir von einem "echo %date%" am CMD-Prompt des NT-Rechners zurückgegeben wird.
Und/oder starte Deinen jetzigen Batch einmal vom CMD-Prompt mit eingeschaltetem "echo", also einem "echo on" am Anfang des Bätschelchens. Und poste die Bildschirmausgabe hier.

Mach Dir keine Sorgen, wenn es zu lang aussieht - ist alles recyclebar...

Grüße
Biber
Member: Bertel84
Bertel84 Jul 11, 2007 at 06:23:14 (UTC)
Goto Top
Hallo und schönen guten Morgen,

also ich habe an dem NT Rechner nun mal einen ECHO %date% befehl laufen lassen. Das ergebnis seht ihr hier:

http://www.250kb.de/u/070711/j/efa56bd9.jpg

Hinter dem 2ten ECHO stand das %date%, aber wie sie sehen, sehen sie nix.. ^^
Er ignoriert das %date% irgendwie..

Wenn ich in der cmd.exe date/t eingebe wirft er mir folgendes datumsformat aus:

http://www.250kb.de/u/070711/j/38a0c857.jpg


So.. nun noch den Programmablauf mit ECHO ON.. (nur den wichtigstens Teil wos ums Datum geht):

http://www.250kb.de/u/070711/j/c86d4ede.jpg

Wie man sieht ignoriert er auch hier das Datum komplett... auf meinem Win2k Rechner im Büro funktioniert es tadellos und er gibt das korrekte datum in korrekter Form aus.

Hat jemand so ein Problem schon mal gehabt ? Also ich bin mit meinem bisserl Latein am ende.. face-sad

mfg Bertel84
Member: Biber
Biber Jul 11, 2007 at 06:54:55 (UTC)
Goto Top
Moin bertel84,

danke für die schnelle Antwort.
Ist mir zwar neu, dass Win NT die Variable %date% nicht kennt, aber..na ja, dann Plan B:

Ersetze bitte die Zeile:
Set MyDateOhneDoW=%date%
...durch diese neue:
for /f %%i in ('date/T') do Set MyDateOhneDoW=%%i  

..und weiter gehts...

Grüße
Biber
Member: Bertel84
Bertel84 Jul 11, 2007 at 08:11:35 (UTC)
Goto Top
Hallo,

habs so gemacht wie du es gesagt hast... ergebnis siehst du hier:

http://www.250kb.de/u/070711/j/0f9afc12.jpg

http://www.250kb.de/u/070711/j/802ad66f.jpg

http://www.250kb.de/u/070711/j/0b742fdf.jpg

http://www.250kb.de/u/070711/j/55bc5c31.jpg

Wie man sieht, erkennt er schonmal das heute Mittwoch ist..
Ein Licht am Ende des Tunnels..


schon mal viel, vielen Dank für deine Mühen.. hoffe den rest bekommen wir auch noch hin.

mfg
Member: Biber
Biber Jul 11, 2007 at 08:25:18 (UTC)
Goto Top
Okay, Bertel84,

dann muss ich noch mal nachbessern:
Ersetze: -----> for /f %%i in ('date/T') do Set MyDateOhneDoW=%%i
Durch neu: ---> for /f "delims=" %%i in ('date/T') do Set MyDateOhneDoW=%%i

Fertig.

Grüße
Biber
Member: Bertel84
Bertel84 Jul 11, 2007 at 10:34:03 (UTC)
Goto Top
Hallo..

wieder zurück vom Testen und was soll ich sagen ?! .. Es funktioniert wunderbar !

Also 1000 Dank an dich.. bist mein persönlicher Held des tages.. ^^

viele grüße
Member: Biber
Biber Jul 11, 2007 at 11:42:20 (UTC)
Goto Top
Moin Bertel84,

gern geschehen...
Ich werde diesen Bug oder vielmehr diesen Fall "Windows NT kennt die Variable %date% (noch) gar nicht" in dem oben erwähnten Tutorial Workshop Batch for Runaways Part III Datums- und Zeitvariablen im Batch bei Gelegenheit ergänzen und dabei auf diesen Thread verweisen.

Diesen Beitrag setze ich erstmal auf "gelöst" und "geschlossen".

Grüße
Biber