Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file Can';无法让batch从字符串中删除奇怪的双引号字符_Batch File - Fatal编程技术网

Batch file Can';无法让batch从字符串中删除奇怪的双引号字符

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

在我们公司,他们将SAP数据导出到文本文件中。有时SAP的用户会将双引号字符输入为“and not a”。当它被导出时,在记事本++中以及批处理回显时会显示为奇怪的字符。我希望在运行批处理文件进行分析时删除此字符。但是,我不知道如何执行此操作

您可以在此处找到示例文本文件:

我使用的代码是:

@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这就是所谓的智能引号。您需要使用正确的编码,否则字符可能无效并被替换为