• ベストアンサー

Windowsバッチで「,,,,,,,,,,」削除

CSVファイルがあります。Windowsバッチを使って、 CSVファイルの中に「,,,,,,,,,,」という行があったら この行を削除して上書き or 別名で保存したいのですが、 どのようなコードになりますか? for でdelimsなしで1行ずつ読み込み、 「=,,,,,,,,,,」で処理を分岐させようとしたら うまくいきませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

(for /f "delims=" %%A in (filename.csv) do if not "%%A" == ",,,,,,,,,," echo %%A)>out.csv では? 入力ファイルに " が存在しないこと、; で始まる行が存在しないことが前提。

fxgame1224
質問者

お礼

ありがとうございます。これでできました。 for文全体を()で囲む使い方は初めて見ました。勉強します。

その他の回答 (7)

回答No.8

ちなみに日本語Windowsでエディッタ(メモ帳)などでテキストを「日本語:Shift JIS」で保存すると「Windows-31J」=「CP932」(MS932)で保存されます。 本来の「Shift_JIS」と「Windows-31J」=「CP932」(MS932)は微妙に違うと言うことに注意して下さい。

回答No.7

訂正です。 >(チョット失念していましたが)キッチリとしたプログラムを組みたい場合は、「Shift JIS」系の場合はキッチリとしたCharsetを指定する必要があります。 >ザックリと言うと「Shift JIS」系の主だったCharsetは「Shift_JIS、Windows-31J、CP943」があるようです(チョット「CP943」は初耳でした)。 申し訳ございませんでした、「VB Script」(WSH(Windows Script Host))だと、そこまでキッチリとしたCharsetを指定できないようです。 「VB Script」(WSH(Windows Script Host))だと「Shift JIS」系は「Shift_JIS」と指定すれば、恐らく「Windows-31J」=「CP932」(MS932)になると思われます(本来は「Shift_JIS」と「Windows-31J」=「CP932」(MS932)は微妙に違うと言うことに注意して下さい)。

回答No.6

>>>ちなみにCSVファイルはCharsetは"Shift_JIS"ですか?、"UTF-8"ですか? >>良く知りませんが、バッチはCharsetは"Shift_JIS"しか対応してないらしいです。 >「VB Script」(WSH(Windows Script Host))なら「CreateObject("ADODB.Stream")」を使えば基本的なCharsetに対応できるようです。 (チョット失念していましたが)キッチリとしたプログラムを組みたい場合は、「Shift JIS」系の場合はキッチリとしたCharsetを指定する必要があります。 ザックリと言うと「Shift JIS」系の主だったCharsetは「Shift_JIS、Windows-31J、CP943」があるようです(チョット「CP943」は初耳でした)。 日本語Windowsを使っている場合は「Windows-31J」=「CP932」(MS932)を指定すれば良いようです。 (いくら何でもザックリすぎ、と思ったら)下記の記事を お読み下さい。 Java の MS932, Cp943C, SJIS の違い http://blue-red.ddo.jp/~ao/wiki/wiki.cgi?page=Java+%A4%CE+MS932%2C+Cp943C%2C+SJIS+%A4%CE%B0%E3%A4%A4 Shift_JIS と Windows-31J (MS932) の違いを整理してみよう https://weblabo.oscasierra.net/shift_jis-windows31j/

回答No.5

>>ちなみにCSVファイルはCharsetは"Shift_JIS"ですか?、"UTF-8"ですか? >良く知りませんが、バッチはCharsetは"Shift_JIS"しか対応してないらしいです。 「VB Script」(WSH(Windows Script Host))なら「CreateObject("ADODB.Stream")」を使えば基本的なCharsetに対応できるようです。

回答No.4

>ちなみにCSVファイルはCharsetは"Shift_JIS"ですか?、"UTF-8"ですか? 良く知りませんが、バッチはCharsetは"Shift_JIS"しか対応してないらしいです。

回答No.2

「VB Script」(WSH(Windows Script Host))で作ってみては? ちなみにCSVファイルはCharsetは"Shift_JIS"ですか?、"UTF-8"ですか?

fxgame1224
質問者

お礼

回答ありがとうございます。文字コードはブラウザに入れてみたところシフトJISでした。 他の回答を参考にして解決しました。

回答No.1

等号「=」やセミコロン「;」・カンマ「,」は区切り文字として認識されます。 これらはデータとして渡すことが出来ないのですが、ダブルクォーテーションで囲めば渡すことは出来ます。 (ただし、受け取った側で囲み文字を除去する必要がある。) 質問者様の例ですと、バッチファイルでは最初のカンマが区切り文字だと判定されてしまいます。 それかdelims=, オプション指定するのはいかがでしょうか。

fxgame1224
質問者

お礼

回答ありがとうございます。 他の回答も参考にして解決しました。