Batch file 使用批处理文件为exe创建快捷方式
我知道这样的主题已经存在,但我不想使用VB脚本 我希望您可以在DOS中使用命令行创建快捷方式 请张贴一些例子,这将是伟大的 谢谢 AA 和Cygwin的Batch file 使用批处理文件为exe创建快捷方式,batch-file,shortcut,shortcuts,Batch File,Shortcut,Shortcuts,我知道这样的主题已经存在,但我不想使用VB脚本 我希望您可以在DOS中使用命令行创建快捷方式 请张贴一些例子,这将是伟大的 谢谢 AA 和Cygwin的ln-s 如果不调用外部程序,则无法在.bat文件中创建快捷方式 但是,自Win2k以来的每个Windows版本都有一种内置的脚本语言,名为 这是我几年前写的一个小WSH脚本,可以从.bat文件调用, 只需将此文本另存为shortcut.wsf,它在脚本中包含使用信息 <package> <job id="MakeShort
ln-s
如果不调用外部程序,则无法在.bat文件中创建快捷方式 但是,自Win2k以来的每个Windows版本都有一种内置的脚本语言,名为 这是我几年前写的一个小WSH脚本,可以从.bat文件调用, 只需将此文本另存为shortcut.wsf,它在脚本中包含使用信息
<package>
<job id="MakeShortcut">
<runtime>
<description>Create a shortcut (.lnk) file.</description>
<named
name = "Target"
helpstring = "the target script"
type = "string"
required = "true"
/>
<named
name = "Args"
helpstring = "arguments to pass to the script"
type = "string"
required = "false"
/>
<unnamed
name = "basename"
helpstring = "basename of the lnk file to create"
type = "string"
required = "false"
/>
</runtime>
<script language="JScript">
if ( ! WScript.Arguments.Named.Exists("Target"))
{
WScript.Arguments.ShowUsage();
WScript.Quit(2);
}
target = WScript.Arguments.Named.Item("Target");
WScript.Echo("target " + target);
args = WScript.Arguments.Named.Item("Args");
WScript.Echo("args " + args);
base = WScript.Arguments.Unnamed.Item(0);
WScript.Echo("base " + base);
fso = WScript.CreateObject("Scripting.FileSystemObject");
//path = fso.GetParentFolderName(WScript.ScriptFullName);
path = fso.GetAbsolutePathName(".");
WScript.Echo("path = " + path);
Shell = WScript.CreateObject("WScript.Shell");
short = fso.BuildPath(path,base);
if ( ! fso.GetExtensionName(base))
short = short + ".lnk";
link = Shell.CreateShortcut(short);
link.TargetPath = fso.BuildPath(path, target);
if (args != null && args != "")
link.Arguments = args;
else
link.Arguments = base;
//link.Description = "Sound Forge script link";
//link.HotKey = "ALT+CTRL+F";
//link.IconLocation = fso.BuildPath(path, target) + ", 2";
//link.WindowStyle = "1"
//link.WorkingDirectory = path;
link.Save();
</script>
</job>
</package>
如果不调用某种外部程序,从批处理文件中创建.lnk格式的快捷方式基本上是不可能的。可以找到该文件规范,并快速浏览说明。
创建.url格式的快捷方式非常简单,因为该格式是一个简单的文本文件。可以找到规范。这种格式有一些缺点,但可能会实现您的目标。您可以从资源工具包中获得。subst是一种仅针对驱动器号的dos破解,它与快捷方式无关。@John:Man……记住那些subst命令……它用于为真正的嵌套子目录创建驱动器号……就像它的别名一样……符号链接并不是绝大多数程序的真正选项。Windows不是UNIX,许多Windows程序都假定内容驻留在它们的应用程序目录中。如果你把它们符号化,它们几乎肯定不会再工作了。我怀疑您想要一个Shell链接(也称为快捷方式),John的解决方案实际上是合适的。还有PowerShell,它更好;)自Win98以来的所有Windows版本都有WSH,默认情况下,仅在Win7和Server 2008上包括PowerShell。在代码的可移植性方面没有竞争。您链接的不是规范,而是格式的反向工程。您可以在以下位置找到实际规格:
<package>
<job id="MakeShortcut">
<runtime>
<description>Create a shortcut (.lnk) file.</description>
<named
name = "Target"
helpstring = "the target script"
type = "string"
required = "true"
/>
<named
name = "Args"
helpstring = "arguments to pass to the script"
type = "string"
required = "false"
/>
<unnamed
name = "basename"
helpstring = "basename of the lnk file to create"
type = "string"
required = "false"
/>
</runtime>
<script language="JScript">
if ( ! WScript.Arguments.Named.Exists("Target"))
{
WScript.Arguments.ShowUsage();
WScript.Quit(2);
}
target = WScript.Arguments.Named.Item("Target");
WScript.Echo("target " + target);
args = WScript.Arguments.Named.Item("Args");
WScript.Echo("args " + args);
base = WScript.Arguments.Unnamed.Item(0);
WScript.Echo("base " + base);
fso = WScript.CreateObject("Scripting.FileSystemObject");
//path = fso.GetParentFolderName(WScript.ScriptFullName);
path = fso.GetAbsolutePathName(".");
WScript.Echo("path = " + path);
Shell = WScript.CreateObject("WScript.Shell");
short = fso.BuildPath(path,base);
if ( ! fso.GetExtensionName(base))
short = short + ".lnk";
link = Shell.CreateShortcut(short);
link.TargetPath = fso.BuildPath(path, target);
if (args != null && args != "")
link.Arguments = args;
else
link.Arguments = base;
//link.Description = "Sound Forge script link";
//link.HotKey = "ALT+CTRL+F";
//link.IconLocation = fso.BuildPath(path, target) + ", 2";
//link.WindowStyle = "1"
//link.WorkingDirectory = path;
link.Save();
</script>
</job>
</package>
c:\> shortcut.wsf
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
Create a shortcut (.lnk) file.
Usage: shortcut.wsf /Target:value [/Args:value] [basename]
Options:
Target : the target script
Args : arguments to pass to the script
basename : basename of the lnk file to create