首页 > 解决方案 > 用于从文本文件中删除双引号的批处理脚本

问题描述

我从外部源收到一个文本文件,其中包含需要通过批处理脚本删除的连续两个双引号的实例。

例如:“双引号”“示例行。”

脚本完成后应显示:“双引号示例行”。

我尝试了下面的脚本,它确实有效,但是它有一个我无法弄清楚的意外后果。只要一行包含感叹号和冒号,就会删除它们之间的所有内容。

例如:“你好!这条线在 13:49 运行。”

该脚本将此行转换为:“Hello49.”。

有没有人有关于修复意外后果的建议或更好的解决方案来删除连续两个双引号的任何实例?

@echo off
setlocal enableextensions enabledelayedexpansion

(   for /f "tokens=*" %%f in (DateFile.txt) do (
        set "line=%%f"
        set "line=!line:""=!"
        echo(!line!
    )
) > NewDataFile.txt

endlocal
echo on

标签: batch-file

解决方案


您只需要在必要时切换延迟扩展。

例子:

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
(   For /F UseBackQ^ Delims^=^ EOL^= %%G In ("DateFile.txt") Do (
        Set "line=%%G"
        SetLocal EnableDelayedExpansion
        Echo(!line:""=!
        EndLocal
    )
) 1> "NewDataFile.txt"

推荐阅读