我对批处理文件编程完全陌生,所以如果这很明显,请原谅我。假设我在TheFileToPassc:\some\path\someFile.extension
中存储了一个字符串,并且我正在从同一个批处理文件中调用另一个 exe,这样我应该只传递从TheFileToPass中扣除的文件名(即someFile)。
我正在尝试做的伪代码:
字符串 TheFileToPass = "c:\some\path\someFile.extension"
调用 external_tool.exe TheFileToPass.GetFileNameWithoutExtension()
通过在线搜索,我知道%~nI可以解决问题,但是如何在TheFileToPass变量上使用它?我尝试了以下方法,但没有任何效果:
echo %%~TheFileToPass
echo %%~n%TheFileToPass%
编辑
好的,我会尝试更具描述性。我在我们的批处理文件中定义了几个“局部变量”:
set someFlag1=
set someFlag2=
set someFile=
然后我解析命令行参数并将它们放在上面声明的变量中。批处理文件可以具有可变数量的命令行参数,因此值的位置可以根据一些预定义的规则而变化。简而言之,我们无法确定 %1、%2、%3 (等等)哪一个将始终具有文件路径。无论如何,根据预定义的规则,我们解析命令行参数(使用 SHIFT 循环技术)并将该信息保存在我们的变量中:someFlag1、someFlag2 和 someFile。
现在,someFile 包含文件的完整路径,例如:“c:\some\path\file.txt”。我们希望调用一个外部 exe 并将文件名从 someFile 变量(在本例中为“file”)的内容传递给它。
那么我们对只从全路径获取文件名的“someFile”变量进行什么操作呢?