2016-03-03 36 views
1

我有一个问题,在网上搜索1个小时后我还没有找到解决方案!制作相对目标的相对快捷方式

情况: 我有一个目录\DIR 在这个目录中我有一个SCRIPT.lnk,我想针对\DIR\Dependences\SCRIPT.bat\DIR文件夹将移植(在USB密钥或任何其他随机目录)。

你有解决方案让他们亲戚吗? 我试过多种语法类型,但没有任何作品。

+0

请分享您的尝试(通过编辑您的帖子将其添加到问题中)!无论如何,我不认为这是可能的'* .lnk'快捷方式; [标签:批处理文件]也许不是创建此类链接的最佳选择... – aschipfl

回答

1

一旦您意识到批处理文件不可执行,该解决方案很容易。它执行cmd.exe,然后解释你的批处理脚本。考虑到这一点,您可以将您的快捷方式指向cmd.exe,以其绝对完全合格的路径或其传统环境变量%comspec%(或者如果您愿意的话,则为%windir%\system32\cmd.exe)。

而现在,因为你的BAT文件不再是目标但现在是一个参数,你可以一整天做的是相对长。美是,如果快捷方式与包含批处理脚本的文件夹一起移动到不同的驱动器和不同的深度,它仍然可以工作。

<# : batch portion 
@echo off & setlocal 

set "shortcutname=script.lnk" 
set "shortcuttarget=DIR\Dependences\SCRIPT.bat" 

powershell -noprofile "iex (${%~f0} | out-string)" 
goto :EOF 

: end batch/begin PowerShell hybrid code #> 

$shortcut = (new-object -COM WScript.Shell).CreateShortcut($env:shortcutname) 
$shortcut.TargetPath = "%comspec%" 
$shortcut.Arguments = '/c "{0}"' -f $env:shortcuttarget 
$shortcut.Save() 

而且任何人都好奇,如何这可以应用到指向不是.BAT剧本以外的东西(如PDF文档,例如)的快捷方式,只需更换与此$shortcut.Arguments行:

$shortcut.Arguments = '/c start "" "{0}"' -f $env:shortcuttarget 
+0

好的男人,谢谢,但是,我想知道我应该在哪里写下你给我的脚本? –

+0

哦,没关系,我只是没有理解,我只用这段代码做了一个批处理,它使我成为一个新的快捷方式。非常感谢你! –

+0

但我仍然有一个问题,这个作品完美,但如果我在我的蝙蝠快捷方式中打勾“运行管理员”,bat文件将不会启动...任何解决方案? :) –