2012-05-01 21 views
21

Come si ottiene il nome file da questa stringa?Ottieni nome file da percorso stringa?

"C:\Documents and Settings\Usuario\Escritorio\hello\test.txt" 

uscita:

"test.txt" 

Ho cercato di trovare questo prima di pubblicare, ma tutti i risultati sono stati contaminati, si parla di ottenere i nomi dei file da directory corrente (devo lavorare solo con le stringhe)

+0

'cd' a quella directory e digitare' dir/b' – Marc

+0

@Marc th alla stringa viene creato con un ciclo, penso che l'accesso a 200-300 dir non sia saggio. Devo davvero lavorare solo con le stringhe, ma grazie per l'alternativa – ajax333221

+0

Vedere la mia nuova risposta – Marc

risposta

43

Metodo 1

for %%F in ("C:\Documents and Settings\Usuario\Escritorio\hello\test.txt") do echo %%~nxF 

Digitare HELP FOR per ulteriori informazioni.

Metodo 2

call :sub "C:\Documents and Settings\Usuario\Escritorio\hello\test.txt" 
exit /b 

:sub 
echo %~nx1 
exit /b 

Tipo HELP CALL per maggiori informazioni.

+0

per favore, puoi spiegare "% ~ nx1"? –

+0

@ Yukulélé - Modifica l'espansione di '% 1', trattandola come un percorso file e espandendo il nome e l'estensione, ignorando l'unità e il percorso. Digitare 'HELP CALL' o' CALL /? 'Dal prompt dei comandi per ulteriori informazioni su tutti i modificatori di espansione dei parametri. – dbenham

+3

grazie, ho trovato maggiori dettagli qui http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true –

5

Se c'è bisogno di la i nomi dei file sotto il "c: \ temp" albero di directory (incluse le sottodirectory):

FOR /R c:\temp %i in (*.*) do echo %~nxi 
4

se il percorso si presenta come un parametro, basta usare:

% ~ NX1 (1 per la prima param e noi supponiamo che sia il primo)

echo% ~ NX1 sarebbe tornare direttamente test.txt

+1

Ho solo bisogno di questo male io e, per quel caso particolare (come parametro), è molto più breve ed elegante. – stormofwar

Problemi correlati