脚本批处理在.bat文件中不起作用,但如果在命令提示符下编写则有效

时间:2014-11-26 15:24:00

标签: windows batch-file cmd regedit

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

到目前为止,我已经在Batch中创建了一个脚本,该脚本在.txt文件中导出包含单词i' m搜索的每个键和子项,使用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而不显示任何错误...

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

1 个答案:

答案 0 :(得分:3)

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

  

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