Utilizzare il cmd.exe
processore dei comandi per creare un nome file con data e ora per registrare l'output dell'attività pianificata
Per basarsi sulle risposte di altri qui, potrebbe essere necessario creare un file di output con la data e / o l'ora incorporate nel nome del file. Puoi usare il cmd.exe
processore dei comandi per farlo per te.
Nota: questa tecnica prende l'output della stringa delle variabili di ambiente Windows interne e le suddivide in base alla posizione del carattere. Per questo motivo, i valori esatti forniti negli esempi seguenti potrebbero non essere corretti per l'area di Windows utilizzata. Inoltre, con alcune impostazioni internazionali, alcuni componenti della data o dell'ora possono introdurre uno spazio nel nome del file costruito quando il loro valore è inferiore a 10. Per mitigare questo problema, racchiudi il nome del tuo file tra virgolette in modo che eventuali spazi non intenzionali nel file name non interromperà la riga di comando che stai costruendo. Sperimenta e trova ciò che funziona meglio per la tua situazione.
Sii consapevole che PowerShell
è più potente di cmd.exe
. Un modo in cui è più potente è che può gestire diverse regioni di Windows. Ma questa risposta riguarda la risoluzione di questo problema utilizzando cmd.exe
, non PowerShell
, quindi continuiamo.
Utilizzando cmd.exe
È possibile accedere a diversi componenti della data e dell'ora suddividendo le variabili di ambiente interne %date%
e %time%
, come segue (ancora una volta, i valori di suddivisione esatti dipendono dalla regione configurata in Windows):
- Anno (4 cifre):
%date:~10,4%
- Mese (2 cifre):
%date:~4,2%
- Giorno (2 cifre):
%date:~7,2%
- Ora (2 cifre):
%time:~0,2%
- Minuto (2 cifre):
%time:~3,2%
- Secondo (2 cifre):
%time:~6,2%
Si supponga di voler assegnare un nome al file di registro utilizzando questo formato di data / ora: " Log_[yyyyMMdd]_[hhmmss].txt
". Useresti quanto segue:
Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
Per verificarlo, esegui la seguente riga di comando:
cmd.exe /c echo "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt"
Mettendo tutto insieme, per reindirizzare sia stdout
e stderr
dal tuo script a un file di registro denominato con la data e l'ora correnti, utilizzare potrebbe utilizzare quanto segue come riga di comando:
cmd /c YourProgram.cmd > "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt" 2>&1
Si noti che l'uso di virgolette attorno al nome del file per gestire le istanze in cui un componente di data o ora può introdurre uno spazio.
Nel mio caso, se la data / ora corrente fosse 10/05/2017 9:05:34 AM, la riga di comando precedente produrrebbe quanto segue:
cmd /c YourProgram.cmd > "Log_20171005_ 90534.txt" 2>&1