2012-05-01 7 views
21

Wie bekomme ich den Dateinamen von dieser Zeichenfolge?Dateiname aus Zeichenfolge-Pfad abrufen?

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

Ausgang:

"test.txt" 

ich vor der Veröffentlichung diesen zu finden wirklich versucht, aber alle Ergebnisse wurden kontaminiert, sie zu bekommen Dateinamen aus dem aktuell dir sprechen (ich muß nur mit Streichern arbeiten)

+0

'cd' in dieses Verzeichnis direkt zurückzukehren und geben sie' dir/b ' – Marc

+0

@Mark th bei String ist mit einer Schleife erstellt, ich denke, Zugriff auf 200-300 Dirs ist nicht klug. Ich muss wirklich nur Strings bearbeiten, aber danke für die Alternative – ajax333221

+0

Siehe meine neue Antwort – Marc

Antwort

43

Methode 1

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

Typ HELP FOR für weitere Informationen.

Methode 2

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

:sub 
echo %~nx1 
exit /b 

Typ HELP CALL für weitere Informationen.

+0

bitte, können Sie "% ~ nx1" erklären? –

+0

@ Yukulélé - Es ändert die Erweiterung von '% 1' und behandelt es als Dateipfad und erweitert auf den Namen und die Erweiterung, ohne Laufwerk und Pfad. Geben Sie an der Eingabeaufforderung "HELP CALL" oder "CALL /?" Ein, um weitere Informationen zu allen Modifikatoren für die Parametererweiterung zu erhalten. – dbenham

+3

danke, ich fand mehr Details hier http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true –

5

Angenommen, Sie die die Namen der Dateien unter dem „c: \ temp“ müssen Verzeichnisbaum (einschließlich Unterverzeichnisse):

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

, wenn Ihr Pfad als Parameter kommt, verwenden Sie einfach:

% ~ NX1 (1 zum ersten param und wir annehmen, es ist der erste)

echo% ~ nx1 würde test.txt

+1

Ich brauchte nur das schlecht selbst und, Für diesen speziellen Fall (als Parameter) ist es viel kürzer und eleganter. – stormofwar