Windows批处理文件在通过快捷方式调用时是否可以确定其调用的文件名?
例如,我创建real.bat
,并创建名为phony.bat
(.lnk
的快捷方式?)
双击phony
调用phony.bat
。
此批处理文件是否可以检测到名称real.bat
而不是AllowOverride All
?
当然我可以将其复制到另一个名称,但是当我编辑其中一个名称时,我必须手动将内容同步到所有文件。
问题与Can a Windows batch file determine its own file name?有关,但不同。
答案 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>
我可以使用不同的名称创建许多硬链接,并且它们都指向同一个文件,因此我可以自由编辑其中任何一个,而无需手动同步其内容。