2011-10-19 00:35:44 +0000 2011-10-19 00:35:44 +0000
83
83

Come posso trovare il percorso breve di una directory/file di Windows?

Ho bisogno di utilizzare nomi di percorso abbreviati per un'applicazione che sto utilizzando. Ad esempio, ho bisogno di C:\PROGRA~1 Ho bisogno di utilizzare nomi di percorso abbreviati per un'applicazione che sto utilizzando. Ad esempio, ho bisogno di al posto diC:\Program Files. Il programma non può gestire gli spazi e non accetta i percorsi citati (ad esempio“C:\Program Files”`).

Se può essere d'aiuto, sto usando Windows 7. Se necessario, posso accedere a qualsiasi versione a partire da XP.

Risposte (12)

84
84
84
2011-10-19 00:51:45 +0000

Avviare e digitare cmd nella casella di esecuzione. Avvia cmd, e usa cd per arrivare alla cartella che ti interessa:

cd \

Poi

dir /x

C:\>dir /x

13/10/2011 09:14 AM <DIR> DOCUME~1 Documents and Settings
13/10/2011 09:05 AM <DIR> PROGRA~1 Program Files
42
42
42
2014-03-13 23:11:39 +0000

Creare un file bat in qualche comoda directory, poi si potrebbe copiare+incollare il percorso breve da quel percorso.

Si potrebbe semplicemente eseguire command.com e continuare a eseguire i comandi cd anche nella directory corrente.

Negli script batch di Windows, %~s1 espande i parametri del percorso a nomi brevi . Creare questo file batch:

@ECHO OFF
echo %~s1
``` ```
C:\> shortNamePath "c:\Program Files (x86)\Android\android-sdk"
c:\PROGRA~2\Android\ANDROI~1

Ho chiamato il mio shortNamePath.cmd e lo chiamo così:

@ECHO OFF
if '%1'=='' (%0 .) else echo %~s1
``` ```
C:\Program Files (x86)\Android\android-sdk> shortNamePath
C:\PROGRA~2\Android\ANDROI~1

Ecco una versione che usa la directory corrente se non è stato fornito alcun parametro:

SET TESTPATH=c:\Program Files (x86)\Android\android-sdk
``` ```
SET "TESTPATH=c:\Program Files (x86)\Android\android-sdk"

Chiamata senza parametri:

CALL :testargs "%TESTPATH%"
        ︙

:testargs
echo %~s1
goto :eof
``` &001 


**Usando `SET` e una variabile denominata** 


Windows Command Prompt ha alcune convenzioni per gestire le variabili con spazi nei loro valori che sono un po' difficili da imparare e capire, specialmente se si ha un background Unix.   You can do 


&001 


(con **_no_** virgolette), oppure 


&001 &001 


(si noti il posizionamento non intuitivo delle virgolette); poi 


&001
13
13
13
2017-05-22 06:42:16 +0000

C'è una sola linea :

cmd /c for %A in ("C:\Program Files") do @echo %~sA

Breakdown :

  • cmd /c - Avvia una nuova istanza dell'interprete di comandi di Windows, esegue il comando specificato per stringa e poi termina il comando
  • for %%parameter in (set) do - Esegue condizionalmente un comando più volte.
  • echo - Visualizza i messaggi sullo schermo. Il simbolo @ è lo stesso di ECHO OFF applicato solo alla riga corrente.
  • %~s - Il percorso esteso contiene solo nomi brevi.

Fonti :

9
9
9
2011-10-19 01:02:20 +0000

Il “nome breve” è in realtà la vecchia convenzione di denominazione DOS 8.3, quindi tutte le directory saranno le prime 6 lettere seguite da ~1 supponendo che ci sia un solo nome che corrisponda, per esempio:

C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\BCDEFG~1 - C:\BCDEFGHIJKL M Another Directory

qui è l'unica eccezione

C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\ABCDEF~2 - C:\ABCDEFGHI Directory as well
7
7
7
2018-05-12 11:16:06 +0000

Ho trovato un modo molto utile per risolvere il breve percorso della directory corrente (o qualsiasi altra cosa) se avete installato Powershell.

Basta aprire powershell in corrente dir

  • in cmd windows tipo powershell

  • se avete cartella aperta in gui potete digitare cmd.exe o powershell.exe direttamente nella barra degli indirizzi della cartella.

Poi date il comando

(New-Object -ComObject Scripting.FileSystemObject).GetFolder(".").ShortPath

Origine delle informazioni: [[https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303]]](https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303])

4
4
4
2018-05-12 15:31:59 +0000

Simile a quella di Ivan Schwartz risposta , è possibile sostituire “C:\Program Files” con %cd% per ottenere il dir corrente:

cmd /c for %A in ("%cd%") do @echo %~sA
0
0
0
2017-06-23 17:15:55 +0000

In alternativa, si può usare questo fantastico piccolo strumento chiamato PathCopyCopy

In pochi click, si può ottenere il percorso lungo e corto di qualsiasi cartella letteralmente dal menu contestuale, ad esempio:

Click destro nella cartella di destinazione => Copia percorso => Percorso breve.

Fatto. Verrà copiato negli appunti. anteprima

0
0
0
2019-11-03 14:38:08 +0000
@echo off
for %%i in (%*) do echo %%~si
pause

Salvarlo come shortpath.bat , e poi trascinare i file su di esso. Il suo risultato:

C:\PROGRA~1
C:\PROGRA~2
C:\PROGRA~3
C:\Python27
C:\Users
C:\Windows
Press any key to continue . . .
``` &001 


Chiamarlo con `shortpath <file path>` è anch'esso OK.
0
0
0
2017-12-02 17:57:42 +0000
C:\Users\abcd>subst z: "c:\Program Files (x86)\Microsoft Office365 Tools\Microsoft Visual Studio 14.0"

C:\Users\abcd>subst
Z:\: => C:\Program Files (x86)\Microsoft Office365 Tools\Microsoft Visual Studio 14.0"

Questo è il modo più semplice che ho usato quando ho a che fare con i file con spazi e anche questo è accessibile da file explorer ha tutti gli stessi privilegi di accesso.

0
0
0
2020-01-26 22:04:35 +0000

per windows 10 utenti**** NESSUNO** di queste soluzioni stava lavorando per il mio portatile windows 10 poiché una chiave nel registro di sistema vietava la creazione di nomi brevi…

  • Alt+r, digitare regedit per aprire l'editor del registro di sistema
  • andare su HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
  • cercare la chiave NtfsDisable8dot3NameCreation : se il valore è 0x0000000001(1), allora il vostro sistema non crea alcun nome breve per la vostra cartella/file
  • in questo caso fate doppio clic sul tasto NtfsDisable8dot3NameCreation,
  • digitate 0 nel campo dati

questo non è retroattivo :) Voglio dire che devi ricreare la cartella/file a cui devi accedere dalla tua vecchia app… forse qualcosa di intelligente è possibile anche se non lo so ancora.

sembra che abbiano introdotto questa chiave per velocizzare le operazioni del filesystem.

fonte microsoft https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc959352(v=technet.10)?redirectedfrom=MSDN

-1
-1
-1
2016-11-06 10:51:58 +0000

Ho installato i moduli di nodo facendo funzionare npm install su un boilerplate. Mentre cercavo di cancellare quelle cartelle, windows non ci permette di cancellarle in quanto il percorso è troppo lungo per poterlo gestire.

Dopo alcune ricerche poco profonde, ho pensato che sarebbe stato giusto da parte mia rinominare le cartelle dalla radice alla foglia, in modo da lanciare qualsiasi eccezione di violazione anche per questo tentativo.

Funziona per me. Di seguito è riportato il codice per il progetto C#.

public static int directoryCounterIndex = 0;
    public static void Main(string[] args)
    {
        string dirPath = @"D:\Studies\MeanStack\a\nodem";
        RenameDirectories(dirPath);
    }

    private static void RenameDirectories(string dirPath)
    {
        directoryCounterIndex += 1;
        var newPath = Path.GetDirectoryName(dirPath) + Path.DirectorySeparatorChar + directoryCounterIndex.ToString();
        Directory.Move(dirPath, newPath);
        var subDirectories = Directory.GetDirectories(newPath);
        foreach (var subDirectory in subDirectories)
        {
            RenameDirectories(subDirectory);
        }
    }
-2
-2
-2
2016-02-10 15:18:55 +0000

Basta sostituire gli spazi con

%20
``` ```
test ";($#< and find the word test, and see that the space is %20 and so on...

E’ il modo in cui le cose vengono “tradotte”, e gli spazi vanno in %20.

Se avete davvero bisogno di molto, basta aprire il browser e digitare qualcosa come

&001