Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 创建相对目标的相对快捷方式_Batch File_Path_Shortcut_Target - Fatal编程技术网

Batch file 创建相对目标的相对快捷方式

Batch file 创建相对目标的相对快捷方式,batch-file,path,shortcut,target,Batch File,Path,Shortcut,Target,我有一个问题,在网上搜索了一个小时后,我还没有找到解决方案 情况: 我有一个目录\DIR 在这个目录中,我有一个SCRIPT.lnk,我想把它作为\DIR\Dependences\SCRIPT.bat 但是\DIR文件夹是可移植的(在usb密钥或任何其他随机目录中) 你有办法让他们成为亲戚吗? 我尝试了多种语法类型,但没有一种有效。一旦您意识到批处理文件不可执行,解决方案就很简单了。执行的是cmd.exe,然后解释批处理脚本。记住这一点,您可以将快捷方式指向绝对完全限定路径中的cmd.exe,或

我有一个问题,在网上搜索了一个小时后,我还没有找到解决方案

情况: 我有一个目录
\DIR
在这个目录中,我有一个
SCRIPT.lnk
,我想把它作为
\DIR\Dependences\SCRIPT.bat
但是
\DIR
文件夹是可移植的(在usb密钥或任何其他随机目录中)

你有办法让他们成为亲戚吗?
我尝试了多种语法类型,但没有一种有效。

一旦您意识到批处理文件不可执行,解决方案就很简单了。执行的是
cmd.exe
,然后解释批处理脚本。记住这一点,您可以将快捷方式指向绝对完全限定路径中的
cmd.exe
,或者作为其传统环境变量
%comspec%
(或者
%windir%\system32\cmd.exe
,如果您愿意的话)

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


$shortcut=(新对象-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

请分享您的尝试(通过编辑您的帖子将其添加到问题中)!无论如何,我认为这在
*.lnk
快捷方式中是不可能的;也可能不是创建此类链接的最佳选择…好吧,伙计,谢谢你,但是,我想知道我应该在哪里写下你给我的脚本?哦,没关系,我刚刚明白,我只需要使用此代码进行批处理,这使我成为一个新的快捷方式。谢谢,真是太多了,伙计!但我仍然有一个问题,这是完美的工作,但如果我勾选“运行作为管理员”在我的bat快捷方式,bat文件将不会启动。。。有什么解决办法吗?:)@托马斯。这可能是因为以管理员身份运行cmd会将当前工作目录默认为c:\Windows\system32。您可以尝试将工作目录设置为
或在
$shortcut.Save()
之前插入
$shortcut.WorkingDirectory=“.”
,但我不知道这是否有效。谢谢,我已经尝试过,但是,是的,semms不工作,
.bat
窗口立即打开并关闭