2016-11-02 10 views
1

分割するポイントとして区切り文字=を使用して、csvファイルの値を別々の行に分割しようとしています。すなわち各区切り文字の別々の行に値を分割する - バッチ

#csv file 
video1,video2,video3 
video4,video5,video6 

#Preferred output: 
video1, 
video2, 
video3, 
ect.... 

これまでのところ、私が持っている:

@echo off 
setLocal EnableDelayedExpansion 
for /f "tokens=* delims=, " %%a in (input.csv) do (
set /a N+=1 
echo ^%%a^,>>output.csv 
) 

しかし、私は、パラメータの問題が発生した%%単なる文字列として追加されています。私はそれぞれの代わりにどのように分割を行い、文字列を改行に入れますか?

+0

あなた 'エコーが^ %% A ^、'コマンドでキャレット記号 '^'を取得するために、外側の引用符を削除し

"video1" "" "video3" 

に変更されます何の効果もありません。なぜあなたはそれらを追加しましたか? – aschipfl

+0

分かりません.... *泣き* – user6705306

+0

あなたのコードでは、安全に '^'記号を削除できます。キャレットは、Windowsコマンドプロンプトのエスケープ文字です。例えば、 '>'のような文字をエコーするには、 'echo>'と書く必要があります... – aschipfl

答えて

1
@echo off 
setLocal 
for /f "delims=" %%a in (input.csv) do (
for %%i in (%%a) do echo %%i,>>output.csv 
) 

各行は、順に%%aに配置されます。デフォルトリストの区切り文字(スペース、カンマ、セミコロン)譲受人のため%%i%%i

+0

Brilliant!私は近くに近づいていた、実際にどのように新しいラインに侵入するのか分からなかった。ありがとう – user6705306

1

から%%aの行から順番に各トークンも*または?ようなものを含む空の列と列を扱うことができる。このバージョンを使用して

@echo off 
setLocal EnableDelayedExpansion 
for /f "delims=" %%a in (input.csv) do (
    set "line=%%a" 
    echo reading line: !line! 
    for /F "delims=" %%C in (""!line:^,^=^"^ 

"!"^") do (
     set "col=%%~C" 
     echo - !col! 
    ) 
) 

トリックは、 "<newline>"に置き換えられ、行の先頭と末尾に引用符が追加されます。

video1,,video3%%~Cは、目的の列の内容

関連する問題