So erstellen Sie eine Batchdatei, die als Datum gespeichert werden soll

0

Ich habe eine Batchdatei erstellt, die auf dem Taskplaner für das Sage VIP-Abrechnungssystem ausgeführt wird. Das Problem, das ich bekomme, ist das Datum, an dem das Wort zurückgegeben wird date.zipund nicht das tatsächliche Datum.

Code:

V:
@ECHO OFF
set ldt=%date%
pkzipc -add B:\VIP_Backup_IT\ldt *.pay *.vix
echo ldt
pause
exit

Ich bekomme ldt.zip und nicht das Datum

Eric
quelle
Wenn Sie sich nicht vertippt haben, echo ldt wird angezeigt ldt. Um die variablen Inhalte anzuzeigen, die Sie benötigen echo %ldt%allerdings, wenn Sie nicht brauchen ldt anderswo oder die pkzipc Kommando läuft bis Mitternacht, es ist einfacher zu vergessen ldt und nur verwenden echo %date%.
AFH
Ich dachte deine zweite Verwendung von ldt war als literaler Dateiname gedacht. Wenn Sie verwenden möchten %ldt% Wie auch der Dateiname, siehe sowohl die Antworten von Techie007 als auch von Pauls, wobei letztere komplizierter ist, als es sein muss (siehe mein Kommentar darunter).
AFH

Antworten:

0

Mögen %date%Um auf Variablen zu verweisen, müssen Sie ihren Namen in Prozentzeichen einschließen:

V:
@ECHO OFF
set ldt=%date%
pkzipc -add B:\VIP_Backup_IT\%ldt% *.pay *.vix
echo %ldt%
pause
exit

Hinweis: Abhängig von Ihren regionalen Einstellungen Ihr Datumsformat kann Erzeugen Sie eine Zeichenfolge, die als Dateiname ungültig ist.

Ƭᴇcʜιᴇ007
quelle
0

Sie können keine Datei oder ein Verzeichnis mit Datum als Namen erstellen oder umbenennen, ohne das Schrägstrichsymbol zu analysieren und zu entfernen /

Hier ist eine Möglichkeit, ein Datum zu erhalten und es zu analysieren.

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

echo %YYYY%%MM%%DD%-%HH%%Min%
pkzipc -add B:\VIP_Backup_IT\%YYYY%%MM%%DD%-%HH%%Min% *.pay *.vix

pause
exit
Paul
quelle
Dies ist unnötig kompliziert - das gleiche Ergebnis wird mit erreicht for /f "tokens=1,2,3 delims=/" %%a in ('echo %date%') do ltd=%%c%%b%%a.
AFH
Beachten Sie, dass wenn / ist also nicht in der regionalen Datumszeichenfolge enthalten %ldt% wird das gleiche wie enthalten %date%, z.B 2015-09-23.
AFH
@AFH Ich habe einen einfacheren Weg gefunden, jeden abzudecken Fall das ein kürzeres Zeug aber erhöhen viele Fragen .
Paul