2010-02-09 69 views

回答

1

创建于.LNK格式的快捷方式基本上是从一个批处理文件不可能不调用某种形式的外部程序。文件规格可以找到here,并且一个快速glace将解释。

创建一个.url格式快捷方式非常简单,因为格式是简单的文本文件。该规范可以找到here。这种格式有几个缺点,但可能实现您的目标。

+0

你链接的是*不是*规范,而是格式的逆向工程。你可以在http://msdn.microsoft.com/en-us/library/dd871305(PROT.10).aspx找到实际的规范 – Joey 2010-02-09 14:07:35

3
mklink /D c:\vim "C:\Program Files (x86)\Vim" 

More Info Here

和Cygwin的ln - s

http://en.wikipedia.org/wiki/Symbolic_link#Cygwin_symbolic_links

+2

subst是一个DOS驱动器盘符,它与快捷方式无关。 – 2010-02-09 00:35:01

+0

@John:Man ....记住那些subst命令...它用来为一个真正的嵌套子目录创建一个盘符...就像它的一个别名... – t0mm13b 2010-02-09 00:40:07

+0

@ tommieb75:美好时光,人,美好时光;) – 2010-02-09 00:43:17

2

无需调用外部程序不能创建一个.bat文件的快捷方式。

然而,由于在Win2k每个版本的Windows有一个内置的叫Windows Script Host

下面是一个小的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> 

来看,它不带任何参数,以获得使用率

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 
+0

还有PowerShell,这是更好的方式;) – 2010-02-09 00:36:34

+2

_All_自Win98以来的Windows版本都有WSH,PowerShell仅在Win7和Server 2008上默认包含。在代码可移植性方面,没有比赛。 – 2010-02-09 00:39:12

相关问题