Windows批处理文件可以确定其"调用"使用快捷方式调用时的文件名?

时间:2018-03-07 08:24:04

标签: windows batch-file cmd

Windows批处理文件在通过快捷方式调用时是否可以确定其调用的文件名?

例如,我创建real.bat,并创建名为phony.bat.lnk的快捷方式?)

双击phony调用phony.bat

此批处理文件是否可以检测到名称real.bat而不是AllowOverride All

当然我可以将其复制到另一个名称,但是当我编辑其中一个名称时,我必须手动将内容同步到所有文件。

问题与Can a Windows batch file determine its own file name?有关,但不同。

2 个答案:

答案 0 :(得分:1)

正如在您提到的那样,您已经创建了快捷方式,我假设您可以创建所需的任何属性。

右键单击您的lnk文件,将目标行更改为:

C:\Windows\System32\cmd.exe /c "set "lnk_call=1"&"C:\PATH\TO\your.bat" "

这将更改链接的图标,以便设置回批处理文件cog点击更改图标并在以下位置找到bat文件图标:

%SystemRoot%\System32\SHELL32.dll

最后在你的球棒中放下这一行:

if defined lnk_call echo triggered from lnk file

lnk_call现在可用于确定是否通过双击.lnk文件来调用您的文件。我认为不可能从其他人创建的快捷方式中检测到这一点。

答案 1 :(得分:0)

哦,是的,在这种情况下,我发现硬链接很有用:

mklink /h <link-name> <source-file>

我可以使用不同的名称创建许多硬链接,并且它们都指向同一个文件,因此我可以自由编辑其中任何一个,而无需手动同步其内容。