2012-05-01 73 views
21

如何從這個字符串獲取文件名?從字符串路徑獲取文件名?

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

輸出:

"test.txt" 

我真的試圖找到這一個發佈前,但所有的結果被污染,他們談論從當前目錄獲取文件名(我必須只與字符串的工作)

+0

'cd'返回到該目錄,鍵入'DIR/B' – Marc

+0

@Marc th在字符串被創建一個循環,我認爲訪問200-300 dirs是不明智的。我真的必須只工作字符串,但感謝替代 – ajax333221

+0

請參閱我的新答案 – Marc

回答

43

方法1

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

類型HELP FOR欲瞭解更多信息。

方法2

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

:sub 
echo %~nx1 
exit /b 

更多信息類型HELP CALL

+0

請,你能解釋「%〜nx1」嗎? –

+0

@Yukulélé - 它修改'%1'的擴展,將其視爲文件路徑並擴展名稱和擴展名,忽略驅動器和路徑。請在命令提示符下鍵入HELP CALL或CALL /?以獲取有關所有參數擴展修飾符的更多信息。 – dbenham

+3

謝謝,我在這裏找到更多的細節http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true –

5

假設你需要在「C:\ TEMP」下的文件的名稱目錄樹(包括子目錄):

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

如果路徑是作爲一個參數,只需使用:

%〜NX1(1爲第一個參數,我們想這是第一個)

呼應%〜NX1將直接test.txt的

+1

我只是需要我自己很糟糕,對於那個特定的情況(作爲參數),它更短更優雅。 – stormofwar