Batch file Can';无法让batch从字符串中删除奇怪的双引号字符
在我们公司,他们将SAP数据导出到文本文件中。有时SAP的用户会将双引号字符输入为“and not a”。当它被导出时,在记事本++中以及批处理回显时会显示为奇怪的字符。我希望在运行批处理文件进行分析时删除此字符。但是,我不知道如何执行此操作 您可以在此处找到示例文本文件: 我使用的代码是:Batch file Can';无法让batch从字符串中删除奇怪的双引号字符,batch-file,Batch File,在我们公司,他们将SAP数据导出到文本文件中。有时SAP的用户会将双引号字符输入为“and not a”。当它被导出时,在记事本++中以及批处理回显时会显示为奇怪的字符。我希望在运行批处理文件进行分析时删除此字符。但是,我不知道如何执行此操作 您可以在此处找到示例文本文件: 我使用的代码是: @echo off setlocal EnableDelayedExpansion Set FileLocation=C:\desktop\test.txt FOR /f "delims=" %%a IN
@echo off
setlocal EnableDelayedExpansion
Set FileLocation=C:\desktop\test.txt
FOR /f "delims=" %%a IN ('findstr /I "ABC" %FileLocation%%') DO (
Set FileLine=%%a
echo !FileLine!
Set RemoveChar=!FileLine:”=!
Set RemoveChar=!RemoveChar:ö=!
Echo !RemoveChar!
)
提前谢谢!迟来的回答,但我找到了解决办法
通过更改代码页,记事本++和命令提示符都可以正确处理文本字符串 首先,将批处理文件保存为UTF-8编码。可以通过在编码菜单中选择“UTF-8”来完成 其次,在脚本的开头添加
chcp 65001
。这允许命令处理器将字符视为UTF-8
以下是固定代码:
@echo off
CHCP 65001
setlocal EnableDelayedExpansion
Set FileLocation=C:\desktop\test.txt
FOR /f "delims=" %%a IN ('findstr /I "ABC" %FileLocation%%') DO (
Set FileLine=%%a
echo !FileLine!
Set RemoveChar=!FileLine:”=!
Set RemoveChar=!RemoveChar:ö=!
Echo !RemoveChar!
)
你必须启用延迟扩展。我回顾了你以前的批处理文件问题,其中一些问题的答案显示延迟扩展已启用。抱歉…我忘记添加标题代码。我确实启用了延迟扩展。我编辑了原始帖子。我想问题与所使用的字符有关。有人能帮我吗?谢谢!t这就是所谓的智能引号。您需要使用正确的编码,否则字符可能无效并被替换为
?