【问题标题】:Script batch does not work in a .bat file, but works if written in a command prompt脚本批处理在 .bat 文件中不起作用,但在命令提示符中编写时有效
【发布时间】:2014-11-26 15:23:59
【问题描述】:

我的问题是我必须从系统注册表中删除包含特定单词的每个键和子键(可以更改,它始终是同一个单词)

直到现在我已经在批处理中创建了一个脚本,该脚本在 .txt 文件中导出包含我正在搜索的单词的每个键和子键,使用 vbs 脚本我可以修改键的名称(因为 REG QUERY像“HKEY_LOCAL_MACHINE”和REG DELETE这样的导出键只需要“HKLM”,然后用另一个脚本我需要搜索QUERY导出的每个键(或子键)并删除它们。脚本就像

SET /P keyword="insert keyword to search: "
REG EXPORT HKCU HKCU.reg
REG QUERY HKCU /f %Chiavediricerca% /s >logHKCU.txt
cscript replace.vbs "logHKCU.txt" "HKEY_CURRENT_USER" "HKCU"
FOR /F "delims=;" %i in (logHKCU.txt) do REG DELETE "%i" /va /f

现在我的问题是,如果我在命令提示符中编写每一行,脚本会很好地工作,但是如果我将此代码放在 .bat 文件中,脚本会在 FOR 命令时停止,关闭 cmd 而不显示任何错误...

有什么建议吗? 对不起,如果我的英语不完美,感谢您给我的每一个帮助!

【问题讨论】:

  • 这是一个非常容易出错的批处理文件,不是吗?我指的不是代码本身,而是任务的目标——它可能会出错。
  • 是的,但我必须将它用于一些非常具体的词,这是不可能删除错误的密钥(从旧设置创建的注册表密钥现在会出现问题,否则我必须搜索 32 位哈希在注册表中手动编码)

标签: windows batch-file cmd regedit


【解决方案1】:

在批处理脚本中,您应该将 FOR 命令的变量百分号加倍。这在 FOR 命令帮助(命令提示符处的for /?)中有说明:

要在批处理程序中使用 FOR 命令,请指定 %%variable % 变量。变量名区分大小写,因此 %i 不同 来自 %I。

【讨论】:

  • 天哪,效果很好!对不起,但我是批处理脚本的新手真的很感谢人
猜你喜欢
  • 2013-08-14
  • 2013-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多