用于删除字符的脚本

时间:2013-05-02 14:45:15

标签: windows batch-file

我有一个文件,其中有数千个记录管道,每个字段用引号

括起来
"First Name"|"Last Name"|"address"|"City"|"State"|"Zip"

如何在Windows上编写批处理脚本来处理文件中的数千条记录? 每行在一行上有一条记录,使其看起来如下所示

First Name|Last Name|address|City|State|Zip

3 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL enabledelayedexpansion
DEL outfile.txt 2>nul
FOR /f "delims=" %%i IN (pipedelims.txt) DO (
SET line=%%i
SET line=!line:"=!
>>outfile.txt ECHO(!line!
)

应该为你做好工作。

答案 1 :(得分:1)

比彼得的(也是好的)解决方案更稳定。

它还可以处理带有感叹号,插入符号的行 这使用了延迟扩展的切换,因为如果禁用了延迟扩展,set "line=%%i"仅适用于所有字符,但是为了删除引号,必须启用延迟扩展。

以“;”开头的行通常由默认的EOL字符删除,因此我使用了一些棘手的构造来完全禁用EOL。

@echo off
setlocal DisableDelayedExpansion
(
  FOR /f delims^=^ EOL^= %%i IN (pipedelims.txt) DO (
    SET "line=%%i"
    setlocal EnableDelayedExpansion
    SET "line=!line:"=!"
    ECHO(!line!
    endlocal
  )
) > outfile.txt 

答案 2 :(得分:1)

下载GnuSed是一个选项:

@echo off
sed "s/\x22//g" "filein.txt" >"fileout.txt"

您也可以使用VBS脚本执行相同的操作。