【问题标题】:How to get this link to start in another folder?如何让这个链接在另一个文件夹中开始?
【发布时间】:2017-12-07 17:44:11
【问题描述】:

我有一个批处理脚本,它创建一个创建快捷方式的 vbs(我知道很复杂),但问题是它启动了快捷方式所在的程序。有什么方法可以让它在 exe 所在的 C:\users\Public\Settings\ 中启动?谢谢大家!

SETLOCAL ENABLEDELAYEDEXPANSION
SET LinkName=ITCMD-Notifier-Settings
SET Esc_LinkDest=C:\Users\%username%\Desktop\!LinkName!.lnk
SET Esc_LinkTarget=C:\users\Public\ITCMD\Settings\ITCMD Notifier Settings.exe
SET cSctVBS=CreateShortcut.vbs
SET LOG=".\%~N0_runtime.log"
((
  echo Set oWS = WScript.CreateObject^("WScript.Shell"^) 
  echo sLinkFile = oWS.ExpandEnvironmentStrings^("!Esc_LinkDest!"^)
  echo Set oLink = oWS.CreateShortcut^(sLinkFile^) 
  echo oLink.TargetPath = oWS.ExpandEnvironmentStrings^("!Esc_LinkTarget!"^)
  echo oLink.Save
)1>!cSctVBS!
cscript //nologo .\!cSctVBS!
DEL !cSctVBS! /f /q
)1>>!LOG! 2>>&1

【问题讨论】:

  • echo oLink.WorkingDirectory = "C:\users\Public\Settings" 放在echo oLink.Save 之前也是最好的做法,如SET "Esc_LinkTarget=C:\users\Public\ITCMD\Settings\ITCMD Notifier Settings.exe" 一样将变量名称和变量内容括在引号内
  • 不应该是`C:\users\Public\Settings`吗?

标签: batch-file vbscript shortcut lnk


【解决方案1】:
 )1>!cSctVBS!
SET "originaldir=!CD!"
PUSHD %Esc_LinkTarget%
cscript //nologo "!originaldir!\!cSctVBS!"
POPD
DEL !cSctVBS! /f /q

自然没有保证。应该保存原来的目录名,然后切换到可执行文件的目录,然后在删除文件之前切换回来。

我在cscript 目标周围加上引号,以防当前目录包含分隔符。我不知道cscript 会怎么看...

另一种可能性是先切换到可执行文件的目录,就在创建 VBS 文件的 echoes 之前,然后在删除该文件后弹出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-08
    • 2017-09-06
    • 2015-01-28
    • 2015-01-04
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    相关资源
    最近更新 更多