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)

任何答案或建议都是最受欢迎的。提前谢谢你

4

1 回答 1

2

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

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

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

编辑:不要使用“/”斜杠,你在 Windows 上,不要像你一样把 var 括起来,看我的例子。

于 2012-11-22T19:22:02.040 回答