2016-07-21 13 views
0

Ich habe eine Batch-Datei, die mit Taskplaner ausgeführt wird. Dieser Code-Schnipsel versagt:% Zeit% funktioniert, wenn Benutzer initiiert, aber nicht, wenn Aufgabe ausgelöst wird

Set mm=%DATE:~4,2% 
Set dd=%DATE:~7,2% 
Set yyyy=%DATE:~10,4% 
set t=%TIME:~0,2% 

mkdir L:\Weekly\%yyyy%%mm%%dd%%t%\Edge 

Wenn ich die Aufgabe initiieren, wird dieses Verzeichnis erstellt:

L:\Weekly\2016063013\Edge 

jedoch, wenn die Aufgabe über den geplanten Trigger ausgeführt wird, wird dieses Verzeichnis erstellt:

L:\Weekly\20160702 

Ich habe es schwer, diesen Fehler zu debuggen. Ich brauche die Stunde, um zwischen Backups zu unterscheiden, die manuell nach einem Ereignis ausgelöst wurden, im Gegensatz zu den normalen nächtlichen/wöchentlichen automatisierten Routinen.

+0

Sie bedeuten 'L: \ Weekly \ 20160702 \ Edge' richtig? Wann wurde die Aufgabe ausgeführt? 2. Juli? –

+2

Wenn vor 10:00 Uhr ausgelöst wird, könnte in% time% ein Leerzeichen stehen. Schließen Sie den Pfad in mkdir in einem doppelten Anführungszeichen ein und/oder addieren Sie "t =% t: = 0%" – JosefZ

+0

Die Verwendung von "date" und "time" ist ebenfalls länderabhängig. Für eine länderunabhängige Lösung verwenden Sie stattdessen "wmic". Siehe meine Antwort [Druckdatum in Windows cmd] (http://superuser.com/a/1045459) – DavidPostill

Antwort

0

@JosefZ hat das für mich in einem Kommentar zu meiner Frage gelöst.

Das Skript scheiterte vor Mittag zu laufen, weil, wenn ich die Stunde mit % TIME gezogen: ~ 0,2% wurde mit einem Raum aufgefüllt, dass Wert, das heißt „2“. Deshalb hat makedir das "\ Edge" Unterverzeichnis nicht enthalten. Hier

ist die korrigierte Schnipsel:

Set mm=%DATE:~4,2% 
Set dd=%DATE:~7,2% 
Set yyyy=%DATE:~10,4% 
Set t=%TIME:~0,2% 

::replace space with a zero 
Set t=%t: =0% 

mkdir L:\Weekly\%yyyy%%mm%%dd%%t%\Edge