BATCH需要帮助来替换文本和特殊字符

时间:2015-01-29 15:38:34

标签: batch-file replace

我有一个批处理代码正在工作,除了它返回:Belgi‰在某些时候。 所以当我合并这些结果时,我想将其改为België:

CODE:

@echo off
systeminfo > Test2.txt

echo Please don't close the window, the program is still running...

findstr /C:"Host-naam:" /C:"Naam van besturingssysteem:" /C:"Geregistreerde     eigenaar:" /C:"Product-id:" /C:"Computermodel:" /C:"Computerfabrikant:" /C:"Type systeem:" /C:"Systeeminstellingen:" /C:"Landinstellingen voor invoer:" /C:"Totaal fysiek geheugen:" Test2.txt >> Test1.txt

echo This is the IPv4 adress: >> Test1.txt
ipconfig | findstr /R /C:"IPv4" >> Test1.txt
echo: >> Test1.txt

echo This is the IPv6 adress: >> Test1.txt
ipconfig | findstr /R /C:"IPv6" >> Test1.txt

DEL Test2.txt

EXIT

所以现在它会在某个时刻返回:

Systeeminstellingen:                 nl-be;Nederlands (Belgi‰)
Landinstellingen voor invoer:        nl-be;Nederlands (Belgi‰)

我希望它回馈:

Systeeminstellingen:                 nl-be;Nederlands (België)
Landinstellingen voor invoer:        nl-be;Nederlands (België)

提前致谢

EDIT1: 我尝试在systeminfo>上面添加 chcp 1252 ......感谢你的帮助,它起作用了。

EDIT2: 我刚刚看到我得到他的IPv6地址输出,我想摆脱%14和%11以及其他可能获得%...的地址。 我怎么能这样做?

Link-local IPv6-adres . . . . . . : fe80::1191:e4de:e3e9:277%14
Link-local IPv6-adres . . . . . . : fe80::e400:4433:12c3:2001%11

EDIT3: 所以似乎有一些代码可以删除IPv6地址上的%符号。但是以下情况不起作用。

ipconfig | findstr /R /C:"IPv6" | findstr /v /r "%[0-9]" >> Test1.txt

2 个答案:

答案 0 :(得分:1)

在批处理文件的开头添加chcp 1252会更改代码页 所以现在输出的格式正确(ANSI)。

2部分:
%是地址范围 阅读Why is there a percent sign '%' in the IPv6 address?

答案 1 :(得分:0)

如果在文本编辑器中打开Test1.txt,则显示错误的输出,或者仅当您通过"键入Test1.txt"或者"更多Test1.txt"从命令行?非ASCII字符通常在cmd.exe中不能很好地显示。您可以使用" chcp"更改代码页。命令到65001( chcp 65001 )以支持unicode,但它会导致其他问题(例如, more 命令无法正常工作)。