質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • Windows

    1733questions

    Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

  • CSV

    884questions

    CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

  • バッチファイル

    292questions

    バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

  • コマンドライン

    114questions

    コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

batでcsvの改行が削除できません

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 7,043

Takahito_TTT

score 4

バッチを使用して、
あるcsvの改行コードをすべて削除したいのですが
なかなかうまくいかず困っています
バッチ初心者なので、みなさんのお力をかしていただけないでしょうか

以前、csv内の、「"」(ダブルクォーテーション)をしたことがあるのですが
その時は、

@echo off

setlocal ENABLEDELAYEDEXPANSION

copy nul changed.csv

for /f %%A in (c:\csv\old.csv) 
    do (
        set W1=%%A
        set W2=! W1:"= !
        echo !W2! >> changed.csv
        copy chenged.csv c:\csv\new.csv
)


上記のようにして、削除することができました。
このバッチファイル自体は、インターネットで検索して手に入れたものです

このバッチファイルを少し変えるだけで、
改行が削除できると思い下記のような
バッチファイルを作成したところ、うまく動きませんでした

@echo off

setlocal ENABLEDELAYEDEXPANSION

copy nul changed.csv

for /f %%A in (c:\csv\old.csv) 
    do (
        set W1=%%A
        set W2=! W1:\n= !
        echo !W2! >> changed.csv
        copy chenged.csv c:\csv\new.csv
)

以前、「"」を変換してたところを、改行コードに変更したら
できると思ったのですが、思うように改行コードが削除されません

最終的には、csv内の改行コードをすべて削除して、
横一列にデータが表示できたらと思っています

ご教授の程宜しくお願いします

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

三重の間違いがあります。
1.W1の中には改行は含まれていません
2.バッチスクリプトで\nは改行ではありません
3.echoすると最後に改行が付きます

改行を削除というのは、

1,2,3
A,B,C
X,Y,Z


1,2,3A,B,CX,Y,Z


にすると言うことですが、やりたいことと合っていますか?

追記

改行を付けずに出力するには、set /pコマンドを使います。

@echo off
(for /f %%A in (c:\csv\old.csv) do <NUL set /p="%%A")>c:\csv\new.csv

追記

入力行に空白文字が含まれている場合は、"delims="です。"削除の時もそうだったはずですが。

@echo off
(for /f "delims=" %%A in (c:\csv\old.csv) do <NUL set /p="%%A")>c:\csv\new.csv

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/06/13 21:50

    回答ありがとうございます

    otnさんのおっしゃる通りです
    そのようにデータを加工したいです

    キャンセル

  • 2017/06/14 12:06 編集

    早速試してみたら、思うようにCSVが1行になりました
    ありがとうございます

    試したところ、「,」(カンマ)区切りだとうまくできたのですが
    タブ区切りのCSVだとうまく実行できないようです
    今回のファイルだと、文字化けしたり、一部のカラムだけ抽出されます

    タブ区切りのCSVの場合は他のやり方があるのでしょうか

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Windows

    1733questions

    Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

  • CSV

    884questions

    CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

  • バッチファイル

    292questions

    バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

  • コマンドライン

    114questions

    コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。