Proseguendo gli “studi” su PowerShell in questo articolo volevo soffermarmi sui vari cmdlet che permettono di gestire file e cartelle, quindi creazione, cancellazione, rinomina e spostamento. Vediamo come utilizzarli.

Convenzioni

Per non doverle rispiegare ogni volta, riassumo qui alcune regole da usare nei comandi:

  • Le virgolette, per contenere il percorso di una cartella, vanno sempre usate quando è presente uno spazio nel nome come “D:\Articoli da fare”, non è indispensabile farlo quando il nome non ha spazi come D:\TurboLab. Per nostra scelta, o abitudine, possiamo usarle sempre, alla fine non cambia niente.
  • Le opzioni, almeno le più utilizzabili, da aggiungere al cmdlet:
  1. -verbose serve a mostrare a video cosa ha fatto il comando.
  2. -force serve a sovrascrivere, senza richiesta, eventuali file già presenti nella cartella destinazione che hanno lo stesso nome. Con la stessa opzione possiamo anche forzare la cancellazione di file nascosti o in sola lettura.
  3. -recurse permettere di copiare tutto il contenuto della cartella.
  4. -confirm ferma l’esecuzione dello script sino a quando l’utente non conferma di poter procedere.
  • Il carattere jolly * permette di copiare tutti i file che hanno un nome qualsiasi e estensione .zip (per esempio), quindi *.zip.

Creare/cancellare cartella (New-Item e Remove-Item)

Per creare una nuova cartella bisogna utilizzare questo comando New-Item -Path “d:\TurboLab” -ItemType Directory, invece se la vogliamo cancellare dobbiamo usare Remove-Item d:\TurboLab.

Come creare, copiare, rinominare, cancellare file cartelle PowerShell

Se la cartella da cancellare contiene degli altri elementi ci chiederà se vogliamo eliminarli oppure dobbiamo aggiungere l’opzione -recurse al comando che diventerà quindi Remove-Item D:\TurboLab -recurse.

Se invece vogliamo cancellare tutti i file .zip che si trovano nella cartella, il comando diventa Remove-Item “D:\TurboLab\Articoli da fare\*.zip”, per eliminare un singolo file basta indicare il suo nome completo.

Come creare, copiare, rinominare, cancellare file cartelle PowerShell

Un esempio pratico di Remove-Item è con i file contenuti nella cartella c:\windows\temp, avevo una serie di file exe, tmp e log non cancellabili normalmente da Windows, aggiungendo l’opzione -force li ha eliminati praticamente tutti tranne i due che erano in uso.

Come creare, copiare, rinominare, cancellare file cartelle PowerShell

Se invece vogliamo creare un file possiamo usare il comando New-Item -Path “D:\TurboLab.txt” -ItemType File, oppure la sua versione abbreviata. Alla fine il risultato non cambia viene creato sempre un file vuoto.

Invece il comando New-Item “D:\TurboLab.txt” -value “Prova inserimento testo nel file” crea un file di testo che contiene la stringa inserita dopo l’opzione -value.

Come creare, copiare, rinominare, cancellare file cartelle PowerShell

Copia (Copy-Item)

Il cmdlet Copy-Item permette di copiare oggetti, come file o cartelle.

Il comando Copy-Item “d:\Articoli da fare” “d:\TurboLab” copia solo la cartella principale (vuota) “d:\Articoli da fare” in “d:\TurboLab”, aggiungendo l’opzione -recurse copia tutti i file e cartelle presenti, invece -force sovrascrive, senza chiedere il permesso, eventuali file già presenti con lo stesso nome.

Comando e procedura analoga per la copia di singoli file o per gruppi di file. Se volete copiare solo alcuni file da una cartella, basta indicare il loro nome e percorso completo separandoli con una virgola Copy-Item C:\windows\temp\1.txt,C:\windows\temp\2.txt d:\TurboLab\

Come creare, copiare, rinominare, cancellare file cartelle PowerShell

Spostamento (Move-Item)

Il cmdlet Move-Item permette di spostare un file/cartella, quindi Move-Item “C:\articoli da fare” d:\TurboLab sposta la cartella “C:\articoli da fare” dentro l’altra cartella d:\TurboLab. Invece Move-Item C:\Users\crazy.cat\AppData\Local\Temp\*.ico d:\TurboLab sposta tutti i file .ico dentro la cartella d:\TurboLab.

Come creare, copiare, rinominare, cancellare file cartelle PowerShell

Rinominare (Rename-Item)

Il cmdlet Rename-Item permette di rinominare file o cartelle presenti nel disco fisso. Con questo comando Rename-Item -Path "d:\TurboLab" -NewName "d:\TurboProva" cambiamo nome alla cartella, mentre in questo modo rinominiamo solo il file notepad.exe Rename-Item -Path "d:\TurboProva\notepad.exe" -NewName "d:\TurboProva\pippo.exe".

Come creare, copiare, rinominare, cancellare file cartelle PowerShell

Conclusioni

Una delle cose che mi lascia perplesso di PowerShell è la possibilità di utilizzare la versione completa di un comando, con un maggior numero di opzioni, o la versione breve senza queste opzioni che alla fine non ci servono a niente. Così il comando Rename-Item -Path "d:\TurboLab" -NewName "d:\TurboProva" può diventare Rename-Item "d:\TurboLab" "d:\TurboProva" e il risultato è lo stesso. Questo genera sicuramente confusione nei non esperti e anche in me alle volte.

Per ulteriori riferimenti ed esempi, potete consultare le pagine Microsoft relative ai singoli cmdlet: