我目前正在寻找一种批处理变量的方法,只解析文件名。
例如,我从另一个应用程序传递我的批处理文件a -s参数,该应用程序随后设置为我的源变量。源文件变量通常包含以下内容:C:\ Program Files \ myapp \ Instance.1 \ Data \ filetomove.ext。
我假设从变量的末尾读取直到第一个“\”,并将结果设置为新的变量文件名,但我无法成功使用“for / f”命令。
非常感谢任何帮助!
更新:只有标准的XP或Windows 2000/2003可用...(不能假设安装了资源工具包)。
答案 0 :(得分:9)
如果它作为脚本的参数进入,即%1,%2等,你可以只将文件名和扩展名提取到这样的变量中:
set FILENAME=%~nxN
其中N是参数的索引。例如,此脚本将仅回显第一个参数的文件名:
@echo off
set FILENAME=%~nx1
echo %FILENAME%
答案 1 :(得分:2)
略有改进的版本:
set FILENAME="%~nx1"
额外的括号将确保特殊字符(例如'&')在批处理执行期间不会发生干扰。