标题: [系统相关] [已解决]批处理如何在桌面创建目标程序带参数的快捷方式? [打印本页]
作者: ygqiang 时间: 2014-12-3 00:25 标题: [已解决]批处理如何在桌面创建目标程序带参数的快捷方式?
本帖最后由 pcl_test 于 2016-7-17 12:14 编辑
[已解决]如何用bat批处理,在桌面建立“关机.lnk”快捷方式(带参数的特殊情况)?
快捷命令是:C:\WINDOWS\system32\shutdown.exe -s -t 1
下面2个bat命令,
因为带了 -s -t 2 这参数。虽然也可以创建快捷方式,但却不能运行。
如果不带这个参数,是可以创建快捷方式并运行的。- ;创建文件的快捷方式
- set path=C:\WINDOWS\system32\shutdown.exe -s -t 2
- rem 要创建快捷方式的文件
- set result="%USERPROFILE%\桌面\关机.lnk"
- rem 要创建快捷方式的地方
- echo [InternetShortcut] >> %result%
- echo url="%path%" >> %result%
- rem url一定要写
- echo IconIndex=0 >> %result%
- echo IconFile=%path% >> %result%
-
-
- -----------------------------------------------
- ;创建exe文件的lnk快捷方式
- set SrcFile=%SystemRoot%\system32\shutdown -s -t 2
- set LnkFile==%USERPROFILE%\桌面\关机
- call :CreateShort "%SrcFile%" "%LnkFile%"
- goto :eof
-
- ::Arguments 目标程序参数
- ::Description 快捷方式备注
- ::FullName 返回快捷方式完整路径
- ::Hotkey 快捷方式快捷键
- ::IconLocation 快捷方式图标,不设则使用默认图标
- ::TargetPath 目标
- ::WindowStyle 窗口启动状态
- ::WorkingDirectory 起始位置
-
- :CreateShort
- mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(""%~2.lnk""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Save:close")
复制代码
作者: apang 时间: 2014-12-3 00:31
目测 -s -t 2 应该算 参数
作者: ygqiang 时间: 2014-12-3 00:57
目测 -s -t 2 应该算 参数
apang 发表于 2014-12-3 00:31
对啊。
就是因为带了 -s -t 2 这参数。虽然也可以创建快捷方式,但却不能运行。
如果不带这个参数,是可以创建快捷方式并运行的。
作者: czjt1234 时间: 2014-12-3 07:03
set path=C:\WINDOWS\system32\shutdown.exe -s -t 2
set "path=C:\WINDOWS\system32\shutdown.exe -s -t 2"
作者: ygqiang 时间: 2014-12-3 07:26
set path=C:\WINDOWS\system32\shutdown.exe -s -t 2
set "path=C:\WINDOWS\system32\shutdown.exe -s - ...
czjt1234 发表于 2014-12-3 07:03
set "path=C:\WINDOWS\system32\shutdown.exe -s -t 2"
为啥要将path这个变量,放在""里面呢?
作者: apang 时间: 2014-12-3 09:11
回复 3# ygqiang - ::创建exe文件的lnk快捷方式
- @echo off
- set "SrcFile=%SystemRoot%\system32\shutdown.exe"
- set "Args=-s -t 2"
- set "LnkFile=关机.LNK"
- call :CreateShort "%SrcFile%" "%Args%" "%LnkFile%"
- pause & goto :eof
-
- ::Arguments 目标程序参数
- ::Description 快捷方式备注
- ::FullName 返回快捷方式完整路径
- ::Hotkey 快捷方式快捷键
- ::IconLocation 快捷方式图标,不设则使用默认图标
- ::TargetPath 目标
- ::WindowStyle 窗口启动状态
- ::WorkingDirectory 起始位置
-
- :CreateShort
- mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""DeskTop"") & ""\%~3""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Arguments=""%~2"":b.Save:close")
复制代码
作者: ygqiang 时间: 2014-12-3 09:22
回复 ygqiang
apang 发表于 2014-12-3 09:11
多谢。不过你这个bat代码,通用性如何?
其实我是想在下面位置建立快捷方式:
%userprofile%\「开始」菜单\关机.lnk
作者: apang 时间: 2014-12-3 09:51
回复 7# ygqiang
比你的通用性好。不同的系统,桌面路径不一样,%userprofile%\桌面 只适用于中文xp系统
另外,startmenu 对应的是 开始菜单
作者: ygqiang 时间: 2014-12-3 09:57
回复 ygqiang
apang 发表于 2014-12-3 09:11
多谢。。。
你给的代码可以在桌面生成快捷方式,并且可以运行。
xp系统下,如何修改成在下面位置建立快捷方式?
%userprofile%\「开始」菜单\关机.lnk
或者win7系统下,如何修改成在下面位置建立快捷方式?
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\accessories\- ::创建exe文件的lnk快捷方式
- @echo off
- set "SrcFile=%SystemRoot%\system32\shutdown.exe"
- set "Args=-s -t 2"
- set "LnkFile=关机.LNK"
- call :CreateShort "%SrcFile%" "%Args%" "%LnkFile%"
- pause & goto :eof
-
- ::Arguments 目标程序参数
- ::Description 快捷方式备注
- ::FullName 返回快捷方式完整路径
- ::Hotkey 快捷方式快捷键
- ::IconLocation 快捷方式图标,不设则使用默认图标
- ::TargetPath 目标
- ::WindowStyle 窗口启动状态
- ::WorkingDirectory 起始位置
-
- :CreateShort
- mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""DeskTop"") & ""\%~3""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Arguments=""%~2"":b.Save:close")
复制代码
作者: apang 时间: 2014-12-3 10:20
回复 9# ygqiang
晕死,你在代码中找找哪里有DeskTop,把它改成 StartMenu
作者: ygqiang 时间: 2014-12-3 10:28
回复 ygqiang
晕死,你在代码中找找哪里有DeskTop,把它改成 StartMenu
apang 发表于 2014-12-3 10:20
回复 ygqiang
晕死,你在代码中找找哪里有DeskTop,把它改成 StartMenu
apang 发表于 2014-12-3 10:20
多谢。再请教1个小问题。。
下面这个bat命令,在「开始」菜单建立快捷方式,并且可以运行。
win7系统下,如何修改成在下面位置建立快捷方式?
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\accessories\
startmenu改成accessories,好像也没用啊。- ::创建exe文件的lnk快捷方式
- @echo off
- set "SrcFile=%SystemRoot%\system32\shutdown.exe"
- set "Args=-s -t 2"
- set "LnkFile=关机.LNK"
- call :CreateShort "%SrcFile%" "%Args%" "%LnkFile%"
- pause & goto :eof
-
- ::Arguments 目标程序参数
- ::Description 快捷方式备注
- ::FullName 返回快捷方式完整路径
- ::Hotkey 快捷方式快捷键
- ::IconLocation 快捷方式图标,不设则使用默认图标
- ::TargetPath 目标
- ::WindowStyle 窗口启动状态
- ::WorkingDirectory 起始位置
-
- :CreateShort
- mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""startmenu"") & ""\%~3""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Arguments=""%~2"":b.Save:close")
复制代码
作者: ygqiang 时间: 2014-12-3 11:33
已经解决。- ::创建exe文件的lnk快捷方式
- @echo off
- set "SrcFile=%SystemRoot%\system32\shutdown.exe"
- set "Args=-s -t 2"
- set "LnkFile=关机.LNK"
- call :CreateShort "%SrcFile%" "%Args%" "%LnkFile%"
- pause & goto :eof
-
- ::Arguments 目标程序参数
- ::Description 快捷方式备注
- ::FullName 返回快捷方式完整路径
- ::Hotkey 快捷方式快捷键
- ::IconLocation 快捷方式图标,不设则使用默认图标
- ::TargetPath 目标
- ::WindowStyle 窗口启动状态
- ::WorkingDirectory 起始位置
-
- :CreateShort
- mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""DeskTop"") & ""\%~3""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Arguments=""%~2"":b.Save:close")
复制代码
作者: freesoft00 时间: 2015-3-19 12:42
回复 6# apang
::IconLocation
我想修改快捷方式的图标文件指向,这个添加到哪里?谢谢!
作者: pcl_test 时间: 2015-3-19 13:22
本帖最后由 pcl_test 于 2015-3-22 12:22 编辑
回复 13# freesoft00 - ::创建exe文件的lnk快捷方式
- @echo off
- set "SrcFile=%SystemRoot%\system32\shutdown.exe"
- set "Args=-s -t 2"
- set "LnkFile=关机.LNK"
- set "IconPath=C:\1.ico"
- call :CreateShort "%SrcFile%" "%Args%" "%LnkFile%" "%IconPath%"
- pause & goto :eof
-
- ::Arguments 目标程序参数
- ::Description 快捷方式备注
- ::FullName 返回快捷方式完整路径
- ::Hotkey 快捷方式快捷键
- ::IconLocation 快捷方式图标,不设则使用默认图标
- ::TargetPath 目标
- ::WindowStyle 窗口启动状态
- ::WorkingDirectory 起始位置
-
- :CreateShort
- mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""DeskTop"") & ""\%~3""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Arguments=""%~2"":b.IconLocation=""%~4"":b.Save:close")
复制代码
作者: freesoft00 时间: 2015-3-19 22:49
回复 14# pcl_test
好的,再次谢谢!
作者: freesoft00 时间: 2015-3-21 12:00
本帖最后由 freesoft00 于 2015-3-21 13:38 编辑
回复 14# pcl_test
在64位的系统中,手动打开
Z:\Windows\SysWOW64\cmd.exe 是管理员权限,然后运行编写的创建快捷方式的批处理,会提示脚本错误。
而在64位的cmd中运行没有问题。
请看一下是哪里的问题?我的测试环境是win8.1
脚本执行的很慢,等老半天才弹出来脚本错误,然后才能继续执行批处理下面的任务。
作者: freesoft00 时间: 2015-3-21 13:36
实在想不出什么好的方法,想用批处理创建url形式的快捷方式,但是不行在win8.1中
创建后的快捷方式路径直接被系统添加上来http://后面是设定的路径。- set "path="%SYSTEMDRIVE%\Program Files\Internet Explorer\iexplore.exe""
- set "name=Internet Explorer"
- set m="%USERPROFILE%\Desktop\%name%.url"
- echo [InternetShortcut] >>%m%
- echo URL="%path%" >>%m%
- echo IconIndex=1 >>%m%
- echo IconFile="%SYSTEMDRIVE%\Program Files\Internet Explorer\iexplore.exe" >>%m%
复制代码
作者: freesoft00 时间: 2015-3-21 13:37
而且图标也是网页的图标,被系统自动设置为了url.dll的图标。
作者: pcl_test 时间: 2015-3-21 21:07
本帖最后由 pcl_test 于 2016-6-4 23:31 编辑
回复 16# freesoft00
直接双击运行批处理文件不行吗?怎么还要手动打开cmd?把错误提示截图看看
作者: pcl_test 时间: 2015-3-21 21:15
回复 17# freesoft00 - set "dir=%SYSTEMDRIVE%\Program Files\Internet Explorer\iexplore.exe"
- set "name=Internet Explorer"
- set "m=%USERPROFILE%\Desktop\%name%.url"
- (echo [InternetShortcut]
- echo URL="%dir%"
- echo IconIndex=0
- echo IconFile="%SYSTEMDRIVE%\Program Files\Internet Explorer\iexplore.exe")>"%m%"
复制代码
作者: freesoft00 时间: 2015-3-21 21:28
本帖最后由 freesoft00 于 2015-3-21 21:30 编辑
回复 19# pcl_test
不是不行,因为有些系统双击打开的是64位的cmd就没有什么问题,有些双击打开的就是32位的cmd,这个时候就不行了。所以需要手动打开32位的cmd环境,然后再运行批处理才能测试出来。
我在论坛搜索了64这个关键才,好像vbs有这个问题。
这里:
http://www.bathome.net/viewthread.php?tid=34003&highlight=64
我不知道是不是和我的是一个问题,我看不懂那个帖子的代码,所以不知道如何修改我的创建快捷方式的批处理测试。
作者: pcl_test 时间: 2015-3-21 22:07
回复 21# freesoft00
你的错误提示是什么?
作者: freesoft00 时间: 2015-3-21 22:16
回复 22# pcl_test
现在不在故障机器旁白,如果可以明天下午或者晚上截图上来。
作者: freesoft00 时间: 2015-3-21 22:36
回复 20# pcl_test
这个和上面那个应该没有区别吧?
作者: ygqiang 时间: 2015-3-22 12:09
回复 freesoft00
pcl_test 发表于 2015-3-19 13:22
请教下。。。xp系统环境下,如何将开始菜单里面的“关机”、“注销”图标,换成下面这2种图标外观?谢谢- -----------------------------------------------
- ;创建exe文件的lnk快捷方式
- set SrcFile=logoff
- set LnkFile=%userprofile%\「开始」菜单\注销
- call :CreateShort "%SrcFile%" "%LnkFile%"
- goto :eof
-
- ::Arguments 目标程序参数
- ::Description 快捷方式备注
- ::FullName 返回快捷方式完整路径
- ::Hotkey 快捷方式快捷键
- ::IconLocation 快捷方式图标,不设则使用默认图标
- ::TargetPath 目标
- ::WindowStyle 窗口启动状态
- ::WorkingDirectory 起始位置
-
- :CreateShort
- mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(""%~2.lnk""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Save:close")
复制代码
- -----------------------------------------------
- ;创建exe文件的lnk快捷方式
- set SrcFile=%SystemRoot%\system32\shutdn.bat
- set LnkFile=%userprofile%\「开始」菜单\关机
- call :CreateShort "%SrcFile%" "%LnkFile%"
- goto :eof
-
- ::Arguments 目标程序参数
- ::Description 快捷方式备注
- ::FullName 返回快捷方式完整路径
- ::Hotkey 快捷方式快捷键
- ::IconLocation 快捷方式图标,不设则使用默认图标
- ::TargetPath 目标
- ::WindowStyle 窗口启动状态
- ::WorkingDirectory 起始位置
-
- :CreateShort
- mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(""%~2.lnk""):b.TargetPath=""%~1"":b.WorkingDirectory=""%~dp1"":b.Save:close")
复制代码
作者: apang 时间: 2015-3-22 15:09
回复 25# ygqiang
关机和注销图标在 %windir%\system32\shell32.dll里
随便找一个快捷方式,点击更改图标,定位到%windir%\system32\shell32.dll,从上往下数,看关机图标是第几个
比如win7关机图标是第27个,那么在代码中加一句:
b.IconLocation=""%windir%\system32\shell32.dll, 27""
作者: ygqiang 时间: 2015-3-22 22:52
回复 ygqiang
关机和注销图标在 %windir%\system32\shell32.dll里
随便找一个快捷方式,点击更 ...
apang 发表于 2015-3-22 15:09
解决了。感谢。xp系统下,代码如下:复制代码
作者: ygqiang 时间: 2015-3-22 22:53
win7 64系统下,代码如下:复制代码
作者: freesoft00 时间: 2015-3-23 19:42
回复 19# pcl_test
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |