我试图批量替换字符串中的特殊字符。我已经试过了:
set filename=%filename:é=e%
set filename=%filename:è=e%
但这是行不通的!
出于某种原因,DOS无法正确理解这些字符中的任何一个。这是一个屏幕截图(请注意,“ CSV输出”不是代码的一部分。我只是将回显到.csv中的内容张贴出来,以供您查看)。
(信誉不足,无法发布屏幕截图...)(http://i.imgur.com/dIFeBJz.png)
是的,我在程序,终端以及输出文件中都有不同的字符。现在我不知道如何处理带有重音符号的特殊字符。最佳的是一行代码,可以将它们全部从字符串中删除,而无需替换。
就像是 :
set filename=%filename:À à Ä ä Â â É é È è Ë ë Ê ê Ì ì Ï ï Î î Ò ò Ö ö Ô ô Ù ù Ü ü Û û=%
那将简单地杀死他们,我将在将输出拍摄到.csv文件之前输入此行。可以解决问题,但我无法在BATCH中使用该功能(我见过.NET或其他语言的解决方案,但BATCH中没有)
批处理可以正确管理任何Ascii字符,即代码小于或等于255的字符。这很明显,因为批处理代码本身也必须用Ascii编写。
@echo off
set remove=áéíóúÜü
set string=Aaá Eeé Iií Ooó UuÜüú It Works!
for /F "tokens=1-26 delims=%remove%" %%a in ("%string%") do (
set newString=%%a%%b%%c%%d%%e%%f%%g%%h%%i%%j%%k%%l%%m%%n%%o%%p%%q%%r%%s%%t%%u%%v%%w%%x%%y%%z
)
echo "%newString%"
输出:
"Aa Ee Ii Oo Uu It Works!"
如果要删除的字符不是Ascii(255以上的代码),则批处理程序无法解决此问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句