Vic*_*nko 5 windows registry cmd batch-file
我无法成功运行包含此内容的批处理文件:
REG ADD HKEY_CLASSES_ROOT\hlpfile\shell\compress\command /d "compact.exe /C \"%1\"" /f
REG ADD HKEY_CLASSES_ROOT\hlpfile\shell\uncompress\command /d "compact.exe /U \"%1\"" /f
Run Code Online (Sandbox Code Playgroud)
它导致输出错误消息:
错误:无效的命令行参数.
我想在Windows XP SP2上创建上下文菜单元素并指定操作:
[HKEY_CLASSES_ROOT\hlpfile\shell\compress]
[HKEY_CLASSES_ROOT\hlpfile\shell\compress\command]
@="compact.exe /C \"%1\""
[HKEY_CLASSES_ROOT\hlpfile\shell\uncompress]
[HKEY_CLASSES_ROOT\hlpfile\shell\uncompress\command]
@="compact.exe /U \"%1\""
Run Code Online (Sandbox Code Playgroud)
批处理文件中的两个命令行有什么问题?
使用以下命令覆盖每个注册表项的默认值或创建每个注册表项并从命令行添加默认值:
REG ADD HKEY_CLASSES_ROOT\hlpfile\shell\compress\command /ve /d "\"C:\Full Path\compact.exe\" /C \"%1\"" /f
REG ADD HKEY_CLASSES_ROOT\hlpfile\shell\uncompress\command /ve /d "\"C:\Full Path\compact.exe\" /U \"%1\"" /f
Run Code Online (Sandbox Code Playgroud)
在批处理文件中执行相同操作需要:
@echo off
%SystemRoot%\System32\reg.exe ADD HKEY_CLASSES_ROOT\hlpfile\shell\compress\command /ve /d "\"C:\Full Path\compact.exe\" /C \"%%1\"" /f >nul
%SystemRoot%\System32\reg.exe ADD HKEY_CLASSES_ROOT\hlpfile\shell\uncompress\command /ve /d "\"C:\Full Path\compact.exe\" /U \"%%1\"" /f >nul
Run Code Online (Sandbox Code Playgroud)
要添加注册表值而不仅仅是注册表项,始终需要指定/ve键的默认值或/v "Name of Value"加上注册表值的类型,当然还要指定要分配给注册表值的值.
在批处理文件中,%必须使用额外的百分号转义百分号,以便Windows命令处理器在执行命令,应用程序或脚本之前解析命令行,将其解释为文字字符.原因是它%在批处理文件中具有特殊含义,因为它可以在命令提示符窗口中运行时看到:
call /?它输出命令CALL的帮助,解释如何通过使用百分号和参数号来引用批处理文件参数,不带或带有一个或多个修饰符或百分号和星号来引用除参数0之外的所有参数;for /?它输出命令FOR的帮助,解释如何在Windows命令行上引用一个百分号的循环变量,或者在批处理文件中引用两个百分号,以及不带或带有一个或多个修饰符的循环变量字符;set /?它输出命令SET的帮助,解释如何通过在每侧包含一个百分号的变量名称来引用环境变量,以便在解析命令行或整个命令块上立即扩展,或者如果延迟环境,每侧都有一个感叹号用于延迟扩展变量扩展已启用.请注意,命令REG解析与大多数其他控制台应用程序或内部命令不同的参数cmd.exe.如果双引号"留有反斜杠,则双引号不会被解释为参数字符串的结尾.在这种情况下,双引号被解释为文字字符,反斜杠留给它作为双引号的转义字符.有必要使用一个反斜杠转义字符串值末尾的反斜杠,以正确添加数据字符串.
例:
reg add HKCU\Environment /v "Please Delete" /t REG_SZ /d "Please delete this variable with a backslash \ inside and ending with a backslash\\"
Run Code Online (Sandbox Code Playgroud)
此命令将Please Delete带有字符串值的环境变量添加Please delete this variable with a backslash \ inside and ending with a backslash\到当前用户环境变量的持久列表中.不得转义数据值字符串中的反斜杠.
请注意,环境变量应该使用命令SETX添加到Windows注册表而不是命令REG,如上面的示例所示(如果%SystemRoot%\System32\setx.exe存在).
| 归档时间: |
|
| 查看次数: |
11842 次 |
| 最近记录: |