CMD.EXE/K(回声%1回声%〜N1)犯规把注册表命令键

问题描述:

cmd.exe /k (echo "%1" & echo "%~n1") 

我期待这个输出CMD.EXE/K(回声%1回声%〜N1)犯规把注册表命令键

"X:\Desktop\output\Birthday Party.mp4" 
"Birthday Party" 

当预期输出,但是这是我m越来越

"X:\Desktop\output\Birthday Party.mp4" 
"%~n1" 

我知道如何使用bat文件得到的结果,但我想专门使用注册表。

+2

%1在这里不是一个批处理参数,它是一个注册表参数,因此批处理修饰符不起作用 – jeb

+0

我不知道它的批处理参数,但相同的代码复制到批处理文件时工作正常... –

+0

如果我使用'set myvariable =“%1”&echo%myvariable%',那么输出为'myvariable'again,这在复制到bat文件时工作正常 –

shell解析器不支持与批处理文件相同的参数选项。

你必须使用批处理代码提取的文件名:

cmd /k echo.%1&for %%A in ("%1") do @echo.%%~nA 

支持的shell参数的完整列表实际上没有正式记录任何地方,微软只记录了基本的像%1,但你可以看到最其中一个Windows开发人员使用listed here