我遇到一个问题,即我在网上搜索1小时后才找到解决方案!
情况:
我有一个目录\DIR
在此目录中,我有一个SCRIPT.lnk
,我想定位\DIR\Dependences\SCRIPT.bat
但\DIR
文件夹将是可移植的(在usb密钥或任何其他随机目录中)。
你有解决方案让他们成为亲戚吗? 我尝试了多种语法类型,但都没有效果。
答案 0 :(得分: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