首页 > 解决方案 > 使用 BAT 脚本更改快捷方式的目标

问题描述

实际上,我想复制快捷方式文件并需要更改目标。

对于复制,我有如下的脚本

xcopy /Y "C:\Users\Administrator\Desktop\SFR.lnk" "C:\Users\Administrator\Desktop\SFR-NEW.lnk"*

目标是

当前: “C:\Users\Administrator\AppData\Local\SFR\sfr.exe”。

在这里我想在复制后更改目标,我尝试了一些东西,但它不起作用。

xcopy /Y "C:\Users\Administrator\Desktop\SFR.lnk" "C:\Users\799964\Desktop\SFR-NEW.lnk"*
ChangeLNKs    /p=C:\Users\Administrator\AppData\Local\SFR\sfr.exe -admin

在复制快捷方式后,我只需要 bat 脚本来更改目标。

标签: batch-file

解决方案


从您提供的代码中可以看出,您根本不需要编辑目标。您只是附加一个参数,因此仅添加一个参数会更明智。

您已经被告知其他语言可以满足您的需求,但为了保持话题,我提供了两个完整的批处理文件来使用它们。

一个使用

@FindStr /V "^@" "%~f0"|PowerShell -&GoTo :EOF
$SrcePath = 'C:\Users\Administrator\Desktop\SFR.lnk'
$DestPath = 'C:\Users\799964\Desktop\SFR-NEW.lnk'
Copy-Item $SrcePath $DestPath
$Shortcut = (New-Object -COM WScript.Shell).CreateShortcut($DestPath)
$Shortcut.Arguments = '-admin'
$Shortcut.Save()

还有一个使用

::'@CScript //NoLogo //E:VBScript "%~f0"&Exit /B
SrcePath = "C:\Users\Administrator\Desktop\SFR.lnk"
DestPath = "C:\Users\799964\Desktop\SFR-NEW.lnk"
CreateObject("Scripting.FileSystemObject").CopyFile SrcePath,DestPath
Set Shortcut = WScript.CreateObject("WScript.Shell").CreateShortcut(DestPath)
Shortcut.Arguments = "-admin"
Shortcut.Save
Set Shortcut = Nothing

在此示例中,有一个不可见的第三个字符SUB( 0x1A),它应该可以很好地复制,但无论如何都值得一提。

择其一,就速度而言,我可能会选择后者


推荐阅读