Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 从第一个参数中提取文件名_Batch File - Fatal编程技术网

Batch file 从第一个参数中提取文件名

Batch file 从第一个参数中提取文件名,batch-file,Batch File,如何仅从%1提取文件名(无扩展名?这应该可以 echo%~n1如果%1将只包含一个文件名(无路径): 如果它可以包含路径: echo %~dpn1 将为您提供绝对路径名 很美,不是吗:-P[编辑:正如约翰内斯在评论中指出的那样,这些表格愉快地处理引用的论点,并在过程中删除它们。] 有关详细信息:的帮助。没错,相关帮助位于FOR命令下。这表明此语法仅适用于循环变量的。但实际上,它似乎可以与%1、%2等配合使用。这可能会让您认为它可以与任何环境变量配合使用,但事实并非如此 我喜欢CMD.EXE为什

如何仅从%1提取文件名(无扩展名?

这应该可以


echo%~n1

如果
%1
将只包含一个文件名(无路径):

如果它可以包含路径:

echo %~dpn1
将为您提供绝对路径名

很美,不是吗:-P[编辑:正如约翰内斯在评论中指出的那样,这些表格愉快地处理引用的论点,并在过程中删除它们。]

有关详细信息:
的帮助。没错,相关帮助位于
FOR
命令下。这表明此语法仅适用于循环变量的
。但实际上,它似乎可以与
%1
%2
等配合使用。这可能会让您认为它可以与任何环境变量配合使用,但事实并非如此


我喜欢
CMD.EXE

为什么你认为这会在引用的参数上中断?该帮助明确声明将删除所有周围的引号。你说得对,Johannes。帮助中说,
%~I
将“展开%I以删除任何周围的引号”,这导致我得出(不正确的)结论,即使用涉及
~
的其他表单不会删除周围的引号。谢谢j_random。第一个答案解决了我的问题,但您指出了一些有用的要点(例如:?)所有的单百分比变量都支持~语法(命令行参数、for循环、调用标签)。谢谢Anders,cmd.exe现在看起来更正常了!但是什么是调用标签(在“单百分比变量”的上下文中)?
echo %~dpn1