Batch file 从第一个参数中提取文件名
如何仅从%1提取文件名(无扩展名?这应该可以Batch file 从第一个参数中提取文件名,batch-file,Batch File,如何仅从%1提取文件名(无扩展名?这应该可以 echo%~n1如果%1将只包含一个文件名(无路径): 如果它可以包含路径: echo %~dpn1 将为您提供绝对路径名 很美,不是吗:-P[编辑:正如约翰内斯在评论中指出的那样,这些表格愉快地处理引用的论点,并在过程中删除它们。] 有关详细信息:的帮助。没错,相关帮助位于FOR命令下。这表明此语法仅适用于循环变量的。但实际上,它似乎可以与%1、%2等配合使用。这可能会让您认为它可以与任何环境变量配合使用,但事实并非如此 我喜欢CMD.EXE为什
echo%~n1如果
%1
将只包含一个文件名(无路径):
如果它可以包含路径:
echo %~dpn1
将为您提供绝对路径名
很美,不是吗:-P[编辑:正如约翰内斯在评论中指出的那样,这些表格愉快地处理引用的论点,并在过程中删除它们。]
有关详细信息:的帮助。没错,相关帮助位于FOR
命令下。这表明此语法仅适用于循环变量的。但实际上,它似乎可以与%1
、%2
等配合使用。这可能会让您认为它可以与任何环境变量配合使用,但事实并非如此
我喜欢CMD.EXE
为什么你认为这会在引用的参数上中断?该帮助明确声明将删除所有周围的引号。你说得对,Johannes。帮助中说,%~I
将“展开%I以删除任何周围的引号”,这导致我得出(不正确的)结论,即使用涉及~
的其他表单不会删除周围的引号。谢谢j_random。第一个答案解决了我的问题,但您指出了一些有用的要点(例如:?)所有的单百分比变量都支持~语法(命令行参数、for循环、调用标签)。谢谢Anders,cmd.exe现在看起来更正常了!但是什么是调用标签(在“单百分比变量”的上下文中)?
echo %~dpn1