如何在Windows中使用批处理命令从Unicode注册表文件中删除几行?

如何在Windows中使用批处理命令从Unicode注册表文件中删除几行?,unicode,cmd,batch-processing,Unicode,Cmd,Batch Processing,我有一个程序正在注册表中生成一些数据。 我用“reg export HKCU\Software\ProgramName\Data Data.reg”(Unicode格式)保存它。 我需要把它带到另一台计算机上,然后导入到那里,这样来自那台计算机的程序就可以使用这些数据了。 但是我必须从data.reg中删除一些文本行。文本行很容易找到,因为它们包含一些字符串(例如exe和DLL的路径、特定的程序设置,如“name1=value1”、“name2=value2”、…)。 现在我每隔几天就手动(使用

我有一个程序正在注册表中生成一些数据。 我用“reg export HKCU\Software\ProgramName\Data Data.reg”(Unicode格式)保存它。 我需要把它带到另一台计算机上,然后导入到那里,这样来自那台计算机的程序就可以使用这些数据了。 但是我必须从data.reg中删除一些文本行。文本行很容易找到,因为它们包含一些字符串(例如exe和DLL的路径、特定的程序设置,如“name1=value1”、“name2=value2”、…)。 现在我每隔几天就手动(使用写字板)做一次,但也许还有另一种方法。。。 哦,我不能在这些计算机上安装其他程序(访问受到限制),所以我必须使用batch/cmd文件。 到目前为止,我尝试的是: -将导出重定向到“con”,但仅在变量中可见; -使用“for/F…”但这仅适用于ANSI并删除空行

导入前必须删除这些行,因为第一台计算机的程序设置不能从第二台计算机加载到程序的注册表项中

谁能帮帮我。。。?
谢谢。

使用此代码逐行循环文件内容

FOR /F %z IN (yourfile.reg) DO ...
然后使用条件来确定这一行是否要保留

IF (%z)==[put your key string here]
如果是(或者不是),则将该变量写入目标文件

@echo %z >> output.reg
您可以使用命令行参数替换文件名,使用%1、%2等

总之,那么:

    FOR /F %z IN (%1) DO IF NOT (%z)==[skip this line] @echo %z >> %2

因为你没有给出一些关键的细节,我在这里做一些假设。可以在这个优秀的资源中找到进一步的阅读:

一个示例会很好,但是在导入.reg文件后,您是否可以使用
reg delete
删除所需的键/值

如果指定要删除的字符串,则会有所帮助。只是删除前后的一些示例,这样我们就可以了解要删除的内容,例如程序的路径(exe、DLL)…谢谢。但是我提到了为什么我不能使用“for/F”:因为它只适用于ANSI,文件是Unicode,并且它删除了空行。几天前,我尝试了“FOR/F%z IN(yourfile.reg)DO…”,但该文件甚至没有被处理。。。你指的是哪些关键细节…?啊,对不起,是的。是否尝试使用“类型”更改编码?我建议首先进行实验,以确保它不会对注册表数据或注册表项产生不利影响。您的命令是“type srcfile>destFile”。如果成功,您可以在批处理的顶部执行。是的,我知道转换,但不幸的是无法使用。数据确实是Unicode的…您在使用“cmd/u”访问命令外壳时是否尝试过此操作?没有,因为我从未听说过它…但我现在尝试了“cmd/u”然后运行“for…”。同样的结果是,reg文件没有被处理。这是一个好主意,但我删除了这些行,因此第一台计算机上的程序的某些设置无法传输到第二台计算机上的程序,只有数据。因此,在导入之前必须删除这些行。很抱歉,在我的问题中没有更具体地说明这一点。