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

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

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

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

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

点评

看你截图似乎是Windows10,但我在虚拟机(以及我本机)测试都没有问题的,测试了Windows7、8.1、10、11。 我测试结果是REG_SZ 不支持环境变量,如果写入%SystemRoot%这样的命令会执行不了,直接写入绝对路径是可以的  详情 回复 发表于 2 小时前
回复

使用道具 举报

发表于 5 小时前 | 显示全部楼层
删除语句大概率会因权限不够而失败,建议使用takeown+icacls提权后删除
新手依葫芦画瓢,有兴趣的可以试试
附件.svg为bat文件,请自行更名。
WPS.BAT.svg (1.34 KB, 下载次数: 0)
bat.jpg





回复

使用道具 举报

发表于 4 小时前 | 显示全部楼层
@echo off
chcp 65001 >nul
fltmc >nul 2>&1 || (
    echo 请求管理员权限...
    powershell -Command "Start-Process cmd -ArgumentList '/c ""%~s0""' -Verb RunAs"
    exit
)

echo 【WPS授权重置工具】
echo.
echo 正在结束WPS相关进程...
taskkill /f /im wps.exe >nul 2>&1
taskkill /f /im et.exe >nul 2>&1
taskkill /f /im wpp.exe >nul 2>&1
taskkill /f /im wpscloudsvr.exe >nul 2>&1
timeout /t 1 /nobreak >nul

echo.
echo 删除授权注册表项...
Reg delete "HKEY_CURRENT_USER\Software\Kingsoft\Office\6.0\Common\AuthInfo" /f >nul 2>&1
Reg delete "HKEY_CURRENT_USER\Software\Kingsoft\Office\6.0\et" /f >nul 2>&1
Reg delete "HKEY_CURRENT_USER\Software\Kingsoft\Office\6.0\wps" /f >nul 2>&1
Reg delete "HKEY_CURRENT_USER\Software\Kingsoft\Office\6.0\wpp" /f >nul 2>&1

echo.
echo 删除license2.dat授权文件
:: 废弃allusersprofile\Application Data,Win10/11该路径在管理员环境容易失效,只使用标准%%programdata%%
set "LIC_FILE=%programdata%\Kingsoft\office6\license2.dat"
if exist "%LIC_FILE%" (
    del /f "%LIC_FILE%"
    echo ✔ 已删除授权文件
) else (
    echo ℹ 授权文件不存在
)

echo.
echo ==============================
echo 操作完成!请重启WPS软件。
echo ==============================
pause
回复

使用道具 举报

发表于 2 小时前 | 显示全部楼层
本帖最后由 门口 于 2026-9-7 17:42 编辑
cqh 发表于 2026-9-7 14:33
我知道,在bat文件里,可以先切换到指定目录再执行。注册表里没试过切换到指定目录执行。
而且,REG_SZ  ...

看你截图似乎是Windows10,但我在虚拟机(以及我本机)测试都没有问题的,测试了Windows7、8.1、10、11。
我测试结果是REG_SZ 不支持环境变量,如果写入%SystemRoot%这样的命令会执行不了,直接写入绝对路径是可以的。
你后面说的应该是想实现多个批处理通过右键管理员方式来简单的集中提权运行吧,这种右键调用方式应该是逐一循环调用的,默认应该不行。
你的这种需求应该用中转脚本或程序去调用,这样只要提权第一个即可。
另外就是在外壳右键调用中参数%*的基本是无用的,它也只是单个文件触发的,基本都是没有参数,并不你想的那样多个文件一起触发(替代%*参数)。
%*似乎可用于文件拖放执行操作(open命令)的。

点评

cqh
1、我的主机系统不是精简版,是正常的。 2、有问题的是精简版的虚拟机系统。 3、我再次确认了是否能在注册表里直接使用 环境变量,发现你的说法是对的。如图。 4、右键菜单需要提权或第三方方式处理,就有点不想折  详情 回复 发表于 27 分钟前
回复

使用道具 举报

发表于 27 分钟前 | 显示全部楼层
门口 发表于 2026-9-7 17:33
看你截图似乎是Windows10,但我在虚拟机(以及我本机)测试都没有问题的,测试了Windows7、8.1、10、11。
...

1、我的主机系统不是精简版,是正常的。

2、有问题的是精简版的虚拟机系统。
3、我再次确认了是否能在注册表里直接使用 环境变量,发现你的说法是对的。如图。
4、右键菜单需要提权或第三方方式处理,就有点不想折腾了。其实主要是不想启动多个进程,明明一个进程就支持。比如:app.bat %* 在命令行是支持一个进程处理多个文件的,经过注册表就不行了。

再次感谢!
runas.jpg
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-7 20:30

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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