无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 625|回复: 13
打印 上一主题 下一主题

[分享] 通过注册表执行多行批处理脚本

[复制链接]
跳转到指定楼层
1#
发表于 7 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
众所周知,修改注册表,可实现右键菜单或者双击文件执行一个命令
例如
[HKEY_CLASSES_ROOT\inifile\shell\open\command]
@="\"Notepad.exe\" \"%1\""
可实现双击inifile(*.ini)时执行 "Notepad.exe 双击的文件的完整路径",即:将 双击的文件的完整路径 作为参数运行 Notepad.exe,效果就是Notepad.exe打开了 双击的文件

如果我希望 右键菜单或者双击文件执行一段批处理脚本,该如何实现呢
简单:
[HKCR\DesktopBackground\shell\重启 Explorer\command]
@="\"C:\\somewhere\\resetexplorer.cmd\""

如果我不希望有命令行黑框闪现呢
换成mshta.exe vbscript:createobject("wscript.shell").run("some.cmd",0)(window.close)调用即可
[HKCR\DesktopBackground\shell\重启 Explorer\command]
@="mshta.exe vbscript:createobject(\"wscript.shell\").run(\"C:\\somewhere\\resetexplorer.cmd\",0)(window.close)"

如果我不希望批处理文件resetexplorer.cmd存在呢,这才是这篇帖子真正要说的,以下是示例

@echo off & setlocal ENABLEDELAYEDEXPANSION

::改造批处理脚本,双引号替换为两个双引号,改为1行,用 & 连接语句,该加括号加,该转义括号转义 ^(
set "batCmd=taskkill /f /im explorer.exe & start """" ""explorer.exe"""

::自动执行注册表所需转义
set "batCmd1=!batCmd:%%=%%%%!"
set "batCmd2=!batCmd1:""=\"\"!"
::写入注册表
Reg.exe add "HKCR\DesktopBackground\Shell\重启 Explorer\command" /ve /t REG_SZ /d "mshta.exe vbscript:createobject(\"wscript.shell\").run(\"cmd /c !batCmd2!\",0)(window.close)" /f

由于需要将需执行的批处理脚本改为1行,所以对于太过于复杂的批处理是不适合的,这种情况就老实让批处理文件存在吧


2#
发表于 7 天前 | 只看该作者
感谢分享
回复

使用道具 举报

3#
发表于 7 天前 | 只看该作者
谢谢分享,学习一下
回复

使用道具 举报

4#
发表于 7 天前 | 只看该作者
这个还真没有玩过呢
回复

使用道具 举报

5#
发表于 7 天前 | 只看该作者
谢谢分享
回复

使用道具 举报

6#
发表于 7 天前 | 只看该作者

谢谢分享
回复

使用道具 举报

7#
发表于 7 天前 | 只看该作者
感谢分享
回复

使用道具 举报

8#
发表于 7 天前 | 只看该作者
感谢分享。
回复

使用道具 举报

9#
发表于 6 天前 | 只看该作者
沙发
回复

使用道具 举报

10#
发表于 6 天前 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

11#
发表于 6 天前 | 只看该作者
学习学习,感谢分享。
回复

使用道具 举报

12#
发表于 6 天前 | 只看该作者
感谢分享
回复

使用道具 举报

13#
发表于 6 天前 | 只看该作者
谢谢分享
回复

使用道具 举报

14#
发表于 5 天前 | 只看该作者
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-2-20 05:07

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表