Gli ambienti a riga di comando come il prompt dei comandi di Windows e PowerShell utilizzano spazi per separare comandi e argomenti, ma anche i nomi di file e directory possono contenere spazi. Per specificare il percorso di un file che contiene uno spazio al suo interno, è necessario "escape" da esso.
Perché fuggire dagli spazi?
“Fuga” o fuggire da un personaggio cambia il suo significato. Ad esempio, l'escape di uno spazio farà sì che la shell lo consideri come un carattere di spazio invece che come un carattere speciale che separa gli argomenti della riga di comando.
Supponiamo di avere un file di testo e di voler visualizzare il contenuto. Puoi farlo con il comando type. Supponendo che il file di testo si trovi in C:\Test\File.txt , il seguente comando nel prompt dei comandi ne visualizzerà il contenuto:
type C:\Test\File.txt
Ora, cosa succede se hai lo stesso file in C:\Test Folder\Test File.txt ? Se provi a eseguire il comando seguente, non funzionerà: gli spazi nel percorso del file sono d'intralcio.
type C:\Test Folder\Test File.txt
La riga di comando pensa che tu stia tentando di cercare un file denominato C:\Test e dice " impossibile trovare il percorso specificato " (impossibile trovare il percorso specificato).
La riga di comando non riesce a trovare il percorso specificato
3 modi per sfuggire agli spazi bianchi su Windows
Esistono 3 modi diversi per sfuggire ai percorsi dei file su Windows:
- Racchiudendo il percorso (o parti di esso) tra virgolette doppie ("").
- Aggiungendo un carattere accentato (^) prima di ogni spazio. (Funziona solo nel prompt dei comandi/CMD e non sembra funzionare con tutti i comandi).
- Aggiungendo un carattere accentato (`) prima di ogni spazio. (Funziona solo in PowerShell, ma funziona sempre).
Questo articolo ti guiderà su come utilizzare ciascun metodo.
Racchiudere il percorso tra virgolette
Il modo standard per garantire che Windows gestisca correttamente il percorso di un file è racchiuderlo tra virgolette doppie (""). Ad esempio, con il comando di esempio sopra, il comando verrebbe eseguito come segue:
type "C:\Test Folder\Test File.txt"
Se lo desideri, puoi effettivamente mettere parti del percorso tra virgolette. Ad esempio, supponiamo che tu abbia un file denominato File.txt in quella cartella. È possibile eseguire quanto segue:
type C:\"Test Folder"\File.txt
Tuttavia, ciò non è necessario. Nella maggior parte dei casi, puoi semplicemente utilizzare le virgolette attorno all'intero percorso.
Questa soluzione funziona sia nell'ambiente tradizionale del prompt dei comandi (CMD) che in Windows PowerShell.
Racchiudere il percorso tra virgolette
Utilizzare il carattere di accento circonflesso (^) prima di uno spazio
Nel prompt dei comandi, il carattere accentato (^) teoricamente ti consentirà di sfuggire agli spazi. Basta aggiungerlo prima di ogni spazio nel nome del file. (Troverai questo carattere nella riga dei numeri sulla tastiera. Per inserire il carattere accentato, premi Maiusc + 6 ).
Il problema è che, sebbene sia efficace, non sempre funziona. La gestione di questo personaggio da parte del prompt dei comandi è strana.
Ad esempio, con il comando di esempio, se esegui quanto segue, il comando non funzionerà:
type C:\Test^ Folder\Test^ File.txt
Il comando precedente non funzionerà
D'altra parte, se provi ad aprire il file direttamente inserendo il suo percorso nel prompt dei comandi, potresti scoprire che il carattere accentato uscirà correttamente dallo spazio:
C:\Test^ Folder\Test^ File.txt
Il carattere di accento circonflesso sfugge correttamente agli spazi bianchi
Allora quando funziona? Sulla base delle ricerche, sembra funzionare solo con alcune app. Le cose possono cambiare a seconda del comando che stai utilizzando. La gestione di questo personaggio da parte del prompt dei comandi è strana. Prova con qualunque comando tu stia utilizzando, potrebbe funzionare o meno.
Per coerenza, l'articolo consiglia di utilizzare virgolette doppie nel prompt dei comandi o di passare a PowerShell e utilizzare il metodo seguente.
Utilizza caratteri accentati (`)
PowerShell usa il carattere accentato (`) come carattere di escape. Basta aggiungerlo prima di ogni spazio nel nome del file. (Troverai questo carattere sopra il tasto Tab e sotto il tasto Esc sulla tastiera).
type C:\Test` Folder\Test` File.txt
Ogni carattere accentato richiede che PowerShell esegua l'escape del carattere che segue.
Tieni presente che funziona solo negli ambienti PowerShell. Dovrai utilizzare il carattere accento circonflesso nel prompt dei comandi.
Utilizza caratteri accentati (`)
Se hai familiarità con i sistemi operativi simili a UNIX come Linux e macOS, potresti avere familiarità con l'uso del carattere barra rovesciata (\) prima di uno spazio per evitarlo. Windows utilizza questo carattere per i percorsi di file regolari, quindi non funziona. I caratteri accento circonflesso (^) e accento (`) rappresentano la versione Windows della barra rovesciata, a seconda della shell della riga di comando che stai utilizzando.
Vedi altro: