Il mio preferito è utilizzare la classe .Net [IO.DirectoryInfo], che si occupa di una parte della logica. In realtà uso questo per molte sfide simili di scripting. Ha un metodo .Create() che crea directory che non esistono, senza errori se lo fanno.
Poiché questo è ancora un problema in due passaggi, utilizzo l'alias di foreach per mantenerlo semplice. Per i singoli file:
[IO.DirectoryInfo]$to |% {$_.create(); cp $from $_}
Per quanto riguarda il vostro multi partita file/directory, vorrei utilizzare RoboCopy sopra xcopy. Rimuovere il "*" dal tuo da e basta usare:
RoboCopy.exe $from $to *
è comunque possibile aggiungere il/r (Recurse),/e (Recurse compreso Vuoto), e ci sono 50 altri interruttori utili.
Modifica: Guardando indietro a questo è terso, ma non molto leggibile se non si utilizza il codice spesso.Di solito ce l'ho diviso in due, in questo modo:
([IO.DirectoryInfo]$to).Create()
cp $from $to
Inoltre, DirectoryInfo è il tipo della proprietà Parent di FileInfo, quindi se il vostro $ per è un file, è possibile utilizzare insieme:
([IO.FileInfo]$to).Parent.Create()
cp $from $to
fonte
2016-09-09 14:27:02
PowerShell è così facile quando si sa che :) – stej
che funziona per intere directory, ma se sto semplicemente copiando i singoli file (in modo da poter avere una st a noi)? Come si copia c: \ test1 \ file.txt in c: \ test2 \ file.txt quando c: \ test2 non esiste? Questo è quello che ho davvero bisogno di sapere come fare. Grazie, Gary –
Mi sono imbattuto in questo stesso problema e l'ho risolto chiamando New-Item prima: 'New-Item -Force $ to' ' Copy-Item -Force $ da $ a' – rjschnorenberg