
Per tutti gli articoli e le guide che riguardano il più popolare sistema operativo per PC, sfoglia il "Canale Windows".
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:
-verbose
serve a mostrare a video cosa ha fatto il comando.-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.-recurse
permettere di copiare tutto il contenuto della cartella.-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
.
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.
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.
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.
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\
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.
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".
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: