1

我有一个批处理脚本,它创建一个创建快捷方式的 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
4

1 回答 1

1
 )1>!cSctVBS!
SET "originaldir=!CD!"
PUSHD %Esc_LinkTarget%
cscript //nologo "!originaldir!\!cSctVBS!"
POPD
DEL !cSctVBS! /f /q

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

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

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

于 2017-12-07T17:56:08.750 回答