我有一個文件,每個字段分隔數千記錄管的加引號腳本刪除字符
"First Name"|"Last Name"|"address"|"City"|"State"|"Zip"
我怎麼會寫在Windows批處理腳本來處理在一個文件中的數千條記錄?
每一行都有一行一條記錄,使它看起來像下面
First Name|Last Name|address|City|State|Zip
我有一個文件,每個字段分隔數千記錄管的加引號腳本刪除字符
"First Name"|"Last Name"|"address"|"City"|"State"|"Zip"
我怎麼會寫在Windows批處理腳本來處理在一個文件中的數千條記錄?
每一行都有一行一條記錄,使它看起來像下面
First Name|Last Name|address|City|State|Zip
@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!
)
應該爲你做的工作。
將重定向移出FOR循環更好。它會刪除感嘆號,有時候也會插入一個號碼 – jeb 2013-05-02 16:50:23
比Peter的(也是好的)解決方案更穩定一些。
它也可以處理與感嘆號,插入記號,
這款採用延遲擴展的觸發,如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
下載GnuSed是一個選項:
@echo off
sed "s/\x22//g" "filein.txt" >"fileout.txt"
也做使用VBS腳本同樣的事情。
當你說「過程」時,你究竟是什麼意思? – 2013-05-02 14:49:14
對不起。我的意思是我有一個帶有記錄的文本文件。所以基本上批處理文件應該從文本文件中讀取每條記錄,並將其引出並將所有結果存儲在文本文件中。 – Villumanati 2013-05-02 14:56:35