2014-09-18 8 views
7

Sto scrivendo uno script PowerShell. Mi piacerebbe sapere come creare una cartella con la data corrente come nome. Il nome della cartella deve essere "aaaa-MM-gg" (secondo le stringhe di formato personalizzato .NET).Crea cartella con la data corrente come nome in PowerShell

so che creare la cartella ho bisogno di utilizzare questo comando:

New-Item -ItemType directory -Path "some path" 

Una possibile soluzione potrebbe essere (se voglio creare la cartella nella stessa directory dello script è:

$date = Get-Date 
$date = $date.ToString("yyyy-MM-dd") 
New-Item -ItemType directory -Path ".\$date" 

c'è un modo per concatenare i comandi quindi non hanno bisogno di creare la variabile?

risposta

14

Sì.

New-Item -ItemType Directory -Path ".\$((Get-Date).ToShortDateString())" 

o come suggerito alroc per ottenere la stessa formattazione indipendentemente dalla cultura.

New-Item -ItemType Directory -Path ".\$((Get-Date).ToString('yyyy-MM-dd'))" 
+1

Grazie, questo è quello che stavo cercando. L'unico problema nella tua soluzione è la data breve, perché dipende dalla lingua degli utenti. Per favore, correggilo su ToString ("yyyy-MM-dd") in modo da poter accettare la tua risposta. – Santhos

+0

Non puoi muoverti? ;) alroc ha postato una risposta che potrebbe funzionare per voi. Per me ho ottenuto esattamente quello che stavi cercando e non ci ho pensato due volte. – notjustme

+0

Non ero sicuro del "" e "" e vorrei contrassegnare la tua domanda come corretta. – Santhos

9

Non utilizzare ToShortDateString() come @notjustme scritto; la sua formattazione dipende dal locale e dalle impostazioni del formato della data nel pannello di controllo della lingua & regionale. Per esempio, sul mio PC in questo momento, che dovrebbe produrre il seguente nome della directory:

C:\Users\me\09\18\2014 

esplicitamente impostare il formato della stringa data, invece.

New-Item -ItemType Directory -Path ".\$((Get-Date).ToString('yyyy-MM-dd'))" 
+0

Ho appena commentato la risposta @notjustme. – Santhos

0

Shorter è

$date = get-date -Format yyyy-mm-dd