Supportnet / Forum / BS-Sonstige
Simpel: Dos, mit einer Variablen rechnen
Frage
Guten Morgen allerseits!
Zuerst die wesentlichen Systemdaten:
cmd unter XP, also kein 'echtes' Dos...
Hardware und sonstige Software stellt keine Probleme dar, kann ich aber ohne Probleme posten, wenn Bedarf bestehen sollte oder sich entwickelt.
Es geht um Folgendes: Ein einfaches Backup-Programm, es soll standardmäßig Daten bestimmter Verzeichnisse in den Ordner <Backup-Datum-von-heute> kopieren, der dann mit Winzip komprimiert wird. Am Ende dieser kleinen Aufgabenkette soll sich der Rechner, da das Ganze als Ende eines Arbeitstages gedacht ist, ausschalten. Alles kein Problem. Interessant wird die Frage, wenn zuvor noch der Ordner (die Zip-Datei) <heute-7-Tage> gelöscht werden. soll.
Mein Ansatz dazu führt zu einer Fehlermeldung, dass eine ungültige Zahl verwendet würde, hoffe, ihr könnt mir helfen:
-----------QC-----------
@for /f "Tokens=1,2,3,4 delims=/. " %%a in ('date/t') do set Day=%%a
set /A Dayd="%Day%-7"
-----------QC-----------
Die daraus entstandene Variable Dayd ließe sich ja wieder ohne Probleme in den Datum-Strang einseten, und die Welt wäre in Ordnung.
Ich hoffe, ihr könnt mir helfen??
Benni
Antwort 1 von manei
Hallo,
das Datum ist keine Zahl in mathematischem Sinn.
Ich glaube auch nicht, daß WinNT/W2K/XP auf Commandebene automatisch das Addieren bzw. Subtrahieren beim Datum beherrscht. Dies macht man am einfachsten mit einem .vbs-Script über eine Batch.
Mit
daterec.bat kannst Du dieses Problem lösen.
@echo off
cls
rem %%1 = output (Variable)
rem %%2 = input (Datum)
rem %%3 = Angabe +/-Tage (z.B. -7)
Set _T=%temp%\~tmp
echo S="%2">%_T%.vbs
echo S=DateAdd("d", %3, (S))>>%_T%.vbs
echo Wscript.Echo "set out="+CStr(S)>>%_T%.vbs
cscript.exe //nologo %_T%.vbs > %_T%.bat
for %%e in (%_T%.bat del) do call %%e %_T%.???
set %1=%out%
for %%e in (_T out) do set %%e=
cls
MfG maneich
das Datum ist keine Zahl in mathematischem Sinn.
Ich glaube auch nicht, daß WinNT/W2K/XP auf Commandebene automatisch das Addieren bzw. Subtrahieren beim Datum beherrscht. Dies macht man am einfachsten mit einem .vbs-Script über eine Batch.
Mit
daterec.bat kannst Du dieses Problem lösen.
@echo off
cls
rem %%1 = output (Variable)
rem %%2 = input (Datum)
rem %%3 = Angabe +/-Tage (z.B. -7)
Set _T=%temp%\~tmp
echo S="%2">%_T%.vbs
echo S=DateAdd("d", %3, (S))>>%_T%.vbs
echo Wscript.Echo "set out="+CStr(S)>>%_T%.vbs
cscript.exe //nologo %_T%.vbs > %_T%.bat
for %%e in (%_T%.bat del) do call %%e %_T%.???
set %1=%out%
for %%e in (_T out) do set %%e=
cls
MfG maneich
Antwort 2 von Der_Benni
Hallo maneich!
Erst einmal ein riesiges 'Danke!' für deine mehr als schnelle Hilfe! Echt super!
Was das Subtrahiern angeht, stimme ich dir zu, offensichtlich streikt Dos - oder was davon übrig ist, bei dieser Aufgabe.
Das wirkliche 'Danke!!!!' kommt aber jetzt, du hast mir wirklich mehr als weitergeholfen. Es funktioniert wie es soll, schlicht genau das, was ich brauche. Danke für deinen etwas 'größeren' Denkanstoß - wobei du die Programmierung nicht zwangsweise für mich hättest machen müssten. Aber trozdem oder gerade erneut: 'Vielen Dank!'
Benni
Erst einmal ein riesiges 'Danke!' für deine mehr als schnelle Hilfe! Echt super!
Was das Subtrahiern angeht, stimme ich dir zu, offensichtlich streikt Dos - oder was davon übrig ist, bei dieser Aufgabe.
Das wirkliche 'Danke!!!!' kommt aber jetzt, du hast mir wirklich mehr als weitergeholfen. Es funktioniert wie es soll, schlicht genau das, was ich brauche. Danke für deinen etwas 'größeren' Denkanstoß - wobei du die Programmierung nicht zwangsweise für mich hättest machen müssten. Aber trozdem oder gerade erneut: 'Vielen Dank!'
Benni

