找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: mimi820

[求助] 一段批处理打开问题,困惑很久了

 火 [复制链接]
发表于 2026-9-6 12:45:52 | 显示全部楼层
本帖最后由 pctop2026 于 2026-9-6 12:58 编辑

我遇到过
你用的是某人的系统吧
他的系统有这毛病
我9.3装了他的28120.2818就出现这问题 运行mas脚本闪退没任何提示
而且系统右下角软件图标不显示,造成部分软件无法正常使用(运行在后台,前台没图标点击使用)
建议你换一个系统试试

点评

确实隔壁的系统,但不知道你的某人是谁。。  详情 回复 发表于 2026-9-6 13:01
回复

使用道具 举报

 楼主| 发表于 2026-9-6 13:00:11 | 显示全部楼层
窄口牛 发表于 2026-9-6 11:56
一句都执行不了,那百分之百是因为编码了。

编码试过了,不知道是不是我电脑右键以管理身份运行问题,不知道怎么修复
回复

使用道具 举报

 楼主| 发表于 2026-9-6 13:01:23 | 显示全部楼层
pctop2026 发表于 2026-9-6 12:45
我遇到过
你用的是某人的系统吧
他的系统有这毛病

确实隔壁的系统,但不知道你的某人是谁。。

点评

本论坛的,不是隔壁的。他的号在隔壁封了的,系统名称2个字的。  发表于 2026-9-6 13:20
回复

使用道具 举报

发表于 2026-9-6 13:09:24 | 显示全部楼层
本帖最后由 holley2008 于 2026-9-6 13:11 编辑
mimi820 发表于 2026-9-6 10:26
我加了这段代码还是不行,正常双击打开停在按任意键退出那里,
右键管理员运行还是一闪而过 ...

定位方法:
1、点开始 输入cmd→ 在"命令提示符" 上右键→ “以管理员身份运行”
2、输入下面两行并回车(把路径换成你 bat 的实际位置):
  1. cd /d "C:\你的脚本所在文件夹"
  2. call 你的脚本.bat
复制代码


如果它执行了,你会看到哪一行报错(比如"系统找不到指定的文件"、"拒绝访问")

点评

这样运行是正常的,就是右键以管理员身份运行一闪  详情 回复 发表于 2026-9-6 19:21
回复

使用道具 举报

发表于 2026-9-6 13:42:04 | 显示全部楼层
   一。一楼的8行代码均无须提权运行,采用的路径也都是全路径,整个代码也没有非 ascii 字符,所以,与是否提权没有什么关系,批处理脚本编码是 ansi 还是 utf-8 皆可。
   二。关键是楼主真实运行的是一楼所示的这段代码?还是从隔壁拿来的完整代码?


回复

使用道具 举报

发表于 2026-9-6 13:44:38 | 显示全部楼层
mimi820 发表于 2026-9-6 11:28
我试了也拉不进去啊。。。。

cmd.exe无法拖放文件?你用的是什么系统?是不是变成了Windows的那个终端Appx?
回复

使用道具 举报

发表于 2026-9-6 14:15:20 | 显示全部楼层
把 @echo off 直接去掉。
回复

使用道具 举报

发表于 2026-9-6 14:26:36 | 显示全部楼层

或者你重装一下系统  也许是你系统的问题
回复

使用道具 举报

发表于 2026-9-6 14:56:01 来自手机 | 显示全部楼层
行数太多了,只留最后一行
回复

使用道具 举报

发表于 2026-9-6 15:12:52 | 显示全部楼层
我虚拟机运行的win10ltsc,XX的精简版本。

把楼主的 脚本存为 bat。
双击正常,但以右键菜单的以 管理员运行报错。

我这里觉得应该是精简系统的问题。
楼主的不确认,但也可能是类似问题。
bat.jpg

点评

你这似乎是没runas,或注册表中缺少runas项,可以检查确认下:HKEY_CLASSES_ROOT\batfile\shell\runas 另外部分精简系统可能默认只有管理员身份(或普通用户),具体我就不清楚了。   发表于 2026-9-7 08:29
cqh
如果是精简系统,那可能有各种问题。  详情 回复 发表于 2026-9-6 15:13
回复

使用道具 举报

发表于 2026-9-6 15:13:42 | 显示全部楼层
cqh 发表于 2026-9-6 15:12
我虚拟机运行的win10ltsc,XX的精简版本。

把楼主的 脚本存为 bat。

如果是精简系统,那可能有各种问题。
回复

使用道具 举报

发表于 2026-9-6 18:01:08 来自手机 | 显示全部楼层
支持一下
回复

使用道具 举报

 楼主| 发表于 2026-9-6 19:21:56 | 显示全部楼层
holley2008 发表于 2026-9-6 13:09
定位方法:
1、点开始 输入cmd→ 在"命令提示符" 上右键→ “以管理员身份运行”
2、输入下面两行并回车( ...

这样运行是正常的,就是右键以管理员身份运行一闪

点评

闪太快可以录屏或手机录像然后再回放慢放。不过看样子你这就是注册表项目问题。  发表于 2026-9-7 09:22
检查一下注册表看是否修改过: 默认值一般是:%SystemRoot%\System32\cmd.exe /C "%1" %*  详情 回复 发表于 2026-9-6 21:15
系统问题 直接换系统就行了 为啥非要用一个不正常的系统呢  发表于 2026-9-6 19:55
回复

使用道具 举报

发表于 2026-9-6 21:15:48 | 显示全部楼层
mimi820 发表于 2026-9-6 19:21
这样运行是正常的,就是右键以管理员身份运行一闪

检查一下注册表看是否修改过:
  1. reg query "HKCR\batfile\shell\runas\command" /ve
  2. reg query "HKCR\cmdfile\shell\runas\command" /ve
  3. reg query "HKCU\Software\Classes\batfile\shell\runas\command" /ve
复制代码


默认值一般是:%SystemRoot%\System32\cmd.exe /C "%1" %*

点评

cqh
把你的默认值更新到我的系统,右键菜单不报错了。感谢。 我系统原来的默认值是 %SystemRoot%\System32\cmd.exe /C pushd "%w" && "%1" %*  详情 回复 发表于 2026-9-7 07:50
reg query "HKCU\Software\Classes\batfile\shell\runas\command" /ve 错误: 系统找不到指定的注册表项或值 这个没有。。。  详情 回复 发表于 2026-9-7 00:30
回复

使用道具 举报

 楼主| 发表于 2026-9-7 00:30:47 | 显示全部楼层
holley2008 发表于 2026-9-6 21:15
检查一下注册表看是否修改过:

reg query "HKCU\Software\Classes\batfile\shell\runas\command" /ve

错误: 系统找不到指定的注册表项或值

这个没有。。。
回复

使用道具 举报

发表于 2026-9-7 07:03:36 | 显示全部楼层
支持折腾
回复

使用道具 举报

发表于 2026-9-7 07:47:57 来自手机 | 显示全部楼层
一段不会玩可以玩一行
回复

使用道具 举报

发表于 2026-9-7 07:50:24 | 显示全部楼层
holley2008 发表于 2026-9-6 21:15
检查一下注册表看是否修改过:

把你的默认值更新到我的系统,右键菜单不报错了。感谢。
我系统原来的默认值是 %SystemRoot%\System32\cmd.exe /C pushd "%w" && "%1" %*

点评

默认值如果是字符串的话,也可以直接把%SystemRoot%替换成绝对路径。  发表于 2026-9-7 09:25
不,你的这个值没有问题,它的含义是切换到文件所在目录后再运行,只不过你的注册表内容的类型应该是错误的,支持环境变量(%xxx%)的应该设置成 REG_EXPAND_SZ(扩展字符串) 类型。 不过,系统的注册表编辑器应该  详情 回复 发表于 2026-9-7 09:15
回复

使用道具 举报

发表于 2026-9-7 08:18:01 | 显示全部楼层
测试方法:注解掉批处理含有EXIT的行,保存,进入命令行(以管理员身份执行),用CD命令切换到批处理所在目录,手动输入批处理按回车,这时会有报错提示。
回复

使用道具 举报

发表于 2026-9-7 08:22:37 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2026-9-7 09:15:44 | 显示全部楼层
本帖最后由 门口 于 2026-9-7 16:56 编辑
cqh 发表于 2026-9-7 07:50
把你的默认值更新到我的系统,右键菜单不报错了。感谢。
我系统原来的默认值是 %SystemRoot%\System32\cm ...

不,你的这个值没有问题,它的含义是切换到文件所在目录后再运行,只不过你的注册表内容的类型应该是错误的,支持环境变量(%xxx%)的应该设置成 REG_EXPAND_SZ(扩展字符串) 类型。
不过,系统的注册表编辑器应该无法直接调整这个默认值的类型,需要用命令来运行:
  1. reg add HKCR\batfile\shell\runas\command /f /ve /d "%SystemRoot%\System32\cmd.exe /C pushd \"%w\" && \"%1\" %*" /t REG_EXPAND_SZ
复制代码
---
补充,另外也可以把环境变量 %SystemRoot% 替换为绝对路径,然后用注册表编辑器在 HKEY_CLASSES_ROOT\batfile\shell\runas\command的 默认值里输入:
  1. C:\Windows\System32\cmd.exe /C pushd "%w" && "%1" %*
复制代码
再编辑补充下,cmd下的reg似乎无法处理引号括起来的环境变量名的传递,但批处理里是可行的,或者没有引号要求的话可以用^转义,所以前面的第一个命令执行的结果是%SystemRoot%解析成实际的值了。也就是说,这种情况,要么注册表直接编辑或导入,要么使用批处理或其他脚本和方法。

点评

这个方法可行,感谢。。。  详情 回复 发表于 2026-9-8 11:51
cqh
我知道,在bat文件里,可以先切换到指定目录再执行。注册表里没试过切换到指定目录执行。 而且,REG_SZ 类型,经测试也支持 环境变量,无需写绝对路径。 另,再问一个问题, 参数里的 "%1" 后面 紧接着 %* 这个参  详情 回复 发表于 2026-9-7 14:33
cqh
在虚拟机按你的脚本执行了,还是报错。HKCR\batfile\shell\runas\command 和 HKCR\cmdfile\shell\runas\command 两项都改了。 可能不同系统不太一样,把 push 去掉就OK。  详情 回复 发表于 2026-9-7 13:35
cqh
了解了,感谢! 不过我把参数内容改了,也可以正常使用。 晚点我把参数恢复,并设置为扩展字符串,看看是否正常。  详情 回复 发表于 2026-9-7 13:21
reg query "HKCR\batfile\shell\runas" /ve 你这项有值吗,我的显示 (默认) REG_SZ (数值未设置)  详情 回复 发表于 2026-9-7 11:17
回复

使用道具 举报

 楼主| 发表于 2026-9-7 10:43:11 | 显示全部楼层
HKCU\Software\Classes\batfile

看了下我的系统就没有batfile路径,估计给删除了

点评

这个不是问题原因,我看了几个原版系统都没有这项 看你前面改了变量问题解决了吧 你在首楼提到的问题比较常见,大多是编码的问题,出现该问题时建议用自带的记事本另存bat(不同windows版本自带的记事本输出的结果  详情 回复 发表于 2026-9-7 11:03
回复

使用道具 举报

发表于 2026-9-7 11:03:36 | 显示全部楼层
mimi820 发表于 2026-9-7 10:43
HKCU\Software\Classes\batfile

看了下我的系统就没有batfile路径,估计给删除了

这个不是问题原因,我看了几个原版系统都没有这项

看你前面改了变量问题解决了吧

你在首楼提到的问题比较常见,大多是编码的问题,出现该问题时建议用自带的记事本另存bat(不同windows版本自带的记事本输出的结果都会有不同,很诡异)
回复

使用道具 举报

发表于 2026-9-7 11:11:39 | 显示全部楼层
本帖最后由 jlshnlhj 于 2026-9-7 11:14 编辑

每行中间加一个:pause,一行行的执行,看看是哪行跳出。
回复

使用道具 举报

 楼主| 发表于 2026-9-7 11:17:33 | 显示全部楼层
门口 发表于 2026-9-7 09:15
不,你的这个值没有问题,它的含义是切换到文件所在目录后再运行,只不过你的注册表内容的类型应该是错误 ...

reg query "HKCR\batfile\shell\runas" /ve

你这项有值吗,我的显示  (默认)    REG_SZ    (数值未设置)

点评

cqh
HKCR\batfile\shell\runas\command 我有这项值,你没有这项值的话,基本就是你快闪的但不执行的原因。 我还做过1个验证,如果参数为 %SystemRoot%\System32\cmd.exe /C "%*" cmd执行时找不到参数,不报错,会一闪而  详情 回复 发表于 2026-9-7 13:26
HKCR对应的系统级别类项:HKEY_CLASSES_ROOT,也即是:HKEY_LOCAL_MACHINE\SOFTWARE\Classes 的映射,和 HKCU\Software\Classes\ (当前用户设置)是不同的(作用范围)  发表于 2026-9-7 11:35
默认都有吧。 而你前面问到的 HKCU\Software\Classes\batfile ,这个是你当前用户的定制的项目,一般是没有的。 Windows注册表的设置是多层叠加的,本机系统和当前用户是不同的(以及还有别的策略),它的优先级和  详情 回复 发表于 2026-9-7 11:30
回复

使用道具 举报

发表于 2026-9-7 11:30:26 | 显示全部楼层
mimi820 发表于 2026-9-7 11:17
reg query "HKCR\batfile\shell\runas" /ve

你这项有值吗,我的显示  (默认)    REG_SZ    (数值未设置) ...

默认都有吧。
而你前面问到的 HKCU\Software\Classes\batfile ,这个是你当前用户的定制的项目,一般是没有的。
Windows注册表的设置是多层叠加的,本机系统和当前用户是不同的(以及还有别的策略),它的优先级和作用(策略)不同,比如你问到的这个键值,可以用于缺少系统级权限的用户来定制bat文件行为(或差异化仅限自己)。
如果不懂也可以问问AI,我也只是大概这么了解。
回复

使用道具 举报

发表于 2026-9-7 13:21:03 | 显示全部楼层
门口 发表于 2026-9-7 09:15
不,你的这个值没有问题,它的含义是切换到文件所在目录后再运行,只不过你的注册表内容的类型应该是错误 ...

了解了,感谢!
不过我把参数内容改了,也可以正常使用。
晚点我把参数恢复,并设置为扩展字符串,看看是否正常。
回复

使用道具 举报

发表于 2026-9-7 13:26:40 | 显示全部楼层
mimi820 发表于 2026-9-7 11:17
reg query "HKCR\batfile\shell\runas" /ve

你这项有值吗,我的显示  (默认)    REG_SZ    (数值未设置) ...

HKCR\batfile\shell\runas\command 我有这项值,你没有这项值的话,基本就是你快闪的但不执行的原因。
我还做过1个验证,如果参数为  %SystemRoot%\System32\cmd.exe /C "%*"
cmd执行时找不到参数,不报错,会一闪而过。和你的现象很像
不设置参数,估计也是一样的。
建议你把 HKCR\batfile\shell\runas\command   和 HKCR\cmdfile\shell\runas\command 都更新为 %SystemRoot%\System32\cmd.exe /C "%1" %*
应该就好了
回复

使用道具 举报

发表于 2026-9-7 13:35:18 | 显示全部楼层
门口 发表于 2026-9-7 09:15
不,你的这个值没有问题,它的含义是切换到文件所在目录后再运行,只不过你的注册表内容的类型应该是错误 ...

  


在虚拟机按你的脚本执行了,还是报错。HKCR\batfile\shell\runas\command 和 HKCR\cmdfile\shell\runas\command 两项都改了。
可能不同系统不太一样,把 push 去掉就OK。
回复

使用道具 举报

发表于 2026-9-7 14:33:33 | 显示全部楼层
门口 发表于 2026-9-7 09:15
不,你的这个值没有问题,它的含义是切换到文件所在目录后再运行,只不过你的注册表内容的类型应该是错误 ...

我知道,在bat文件里,可以先切换到指定目录再执行。注册表里没试过切换到指定目录执行。
而且,REG_SZ 类型,经测试也支持 环境变量,无需写绝对路径。

另,再问一个问题, 参数里的 "%1" 后面 紧接着 %*  这个参数,%* 参数 的目的应该是把选择的多个文件传给程序,让一个程序处理多个文件。
但实际上,程序只能收到1个文件做参数;多个文件实际上是起了多个进程,并行处理的。
与我想要的一个进程处理所有文件不符。
有办法通过注册表右键菜单传多参数吗?

点评

右键菜单传送多个参数给 bat 脚本,可用系统提供的 sendTo 方法,不必修理注册表,只须将 bat 脚本文件放在 "%AppData%\Microsoft\Windows\SendTo\" 目录下即可。 例如,假定已存放在上述系统目录中的 bat 文  详情 回复 发表于 2026-9-7 21:24
看你截图似乎是Windows10,但我在虚拟机(以及我本机)测试都没有问题的,测试了Windows7、8.1、10、11。 我测试结果是REG_SZ 不支持环境变量,如果写入%SystemRoot%这样的命令会执行不了,直接写入绝对路径是可以的  详情 回复 发表于 2026-9-7 17:33
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-25 23:11

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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