在批处理程序中从字符串中查找文件名

时间:2012-11-22 19:08:12

标签: dos batch-file

我是批量编程的新手。我想从String中找到文件名及其扩展名。我看到路径所在的答案是变量,例如。

    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)

欢迎任何答案或建议。谢谢你提前

1 个答案:

答案 0 :(得分:2)

特殊var参数仅适用于特殊变量(%0,%1等)和" FOR" vars,所以首先你需要调用任何像参数一样传递变量的东西,或者做一个FOR:

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

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

编辑:不要使用" /"斜杠,你在Windows上,并没有像你一样包围var,看看我的例子。