2012-11-22 43 views
1

我是批量編程的新手。我想從字符串中找到文件名及其擴展名。我看到路徑中的變量例如從批處理程序中的字符串查找文件名

for /f %%a in ('dir /B') do (
    file_name= %%~nxa 
    ) 

但是下面的代碼不起作用。

stringvar="c:/folder1/folder2/abc.txt" 
    file_name=%%~nxstringvar 

我嘗試了許多排列組合與STRINGVAR和%%和〜NX中表達。但我沒有得到文件名。

請考慮下面的代碼,以瞭解需求。

stringvar="c:/folder1/folder2/abc.txt" 
    filename=getFileName(stringvar) 

任何答案或建議是最受歡迎的。感謝你提前

回答

2

特殊的var參數只適用於特殊的變量(%0,%1等)和「FOR」變量,所以首先你需要調用任何像變量一樣傳遞變量,或者做一個適用於:

@Echo OFF 
SET "stringvar=c:\folder1\folder2\abc.txt" 
Call :sub "%stringvar%" 
Pause&Exit 

:sub 
Echo FILENAME: "%~nx1" 
GOTO:EOF 

編輯:不使用「/」斜線,你是在Windows,像你正在做不封閉無功,見我的例子。

+1

+1,但我更喜歡使用FOR變量,因爲FOR明顯比CALL更快:'for %% F in(「%stringVar%」)do set「fileName = %%〜nxF」' – dbenham

相關問題