各フィールドが引用符で囲まれたパイプで区切られた何千ものレコードを持つファイルがあります
"First Name"|"Last Name"|"address"|"City"|"State"|"Zip"
ファイル内の数千のレコードを処理するために、Windows でバッチ スクリプトを作成するにはどうすればよいですか?
各行には 1 つのレコードがあり、以下のようになります。
First Name|Last Name|address|City|State|Zip
各フィールドが引用符で囲まれたパイプで区切られた何千ものレコードを持つファイルがあります
"First Name"|"Last Name"|"address"|"City"|"State"|"Zip"
ファイル内の数千のレコードを処理するために、Windows でバッチ スクリプトを作成するにはどうすればよいですか?
各行には 1 つのレコードがあり、以下のようになります。
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!
)
あなたのために仕事をするべきです。
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 スクリプトを使用して同じことを行うこともできます。