あなたの習慣について教えてください!!

バッチ処理でcsvの項目を変換する方法でもうひとつ質問があります。
下記のバッチを実行すると、
for /f "delims=, tokens=1-2" %%A in (\INDATA.csv) do echo %%A,%%B,"999999999999">> OUTDATA.csv

INDATA.csvの中身
AAAA,1
BBBB,2



OUTDATA.csvの中身
AAAA,1,"999999999999"
BBBB,2,"999999999999"
CCCC,3,"999999999999"

となります。

下記の用にすることはできますか?

AAAA,1,"900000000001"
BBBB,2,"900000000002"
CCCC,3,"900000000003"

%%B + 900000000000ですが、文字項目にしたいので、"" でくくりたいのですが,,,,,

質問者からの補足コメント

  • うーん・・・

    回答ありがとうございました。
    早速試しました。
    set文を外すと、9で出力されるのですが、 set文を入れると空っぽの出力でした。
    どこが悪いのでしょうか?
    お手数をおかけします


    for /f "delims=, tokens=1-2" %%A in (\INDATA.csv) do (echo %%A,%%B,"9!CC!" >>OUTDATA.csv)
    ×
    for /f "delims=, tokens=1-2" %%A in (\INDATA.csv) do (set CC=00000000000%%B set CC=!CC:~-11! echo %%A,%%B,"9!CC!" >>OUTDATA.csv)

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/12/18 07:41
  • つらい・・・

    ちなみに
    INDATA.CSVが
    AAAA,+1
    BBBB,+2
    の場合、+は無視して、同じ結果にするにはどうすればいいですか?

    AAAA,+1,"900000000001"
    BBBB,+2,"900000000002"
    CCCC,+3,"900000000003"

      補足日時:2015/12/18 08:05
  • うれしい

    すみません。99%うまくいきました。
    最後に、この場合もできますか?
    INDATA.CSVが
    AAAA,+1.
    BBBB,+2.
    の場合、+と後ろの.(ピリオド)は無視して、同じ結果にするにはどうすればいいですか?
    AAAA,+1.,"900000000001"
    BBBB,+2.,"900000000002"
    CCCC,+3.,"900000000003"

    2行並べても後ろの.(ピリオド)は無視されました
    if "!BB:~0,1!" == "+" (set BB=!BB:~1!)
    if "!BB:~0,1!" == "." (set BB=!BB:~1!)

      補足日時:2015/12/18 11:19

A 回答 (3件)

これで、解決出来るはずです。



if "!BB:~0,1!" == "+" (set BB=!BB:~1!)
if "!BB:~-1!" == "." (set BB=!BB:~0,-1!)
    • good
    • 0
この回答へのお礼

いきました
何度もすみませんでした。

お礼日時:2015/12/18 11:50

以下の方法で出力出来ます。


+を無視にも対応。

@echo off
setlocal enabledelayedexpansion

type NUL >OUTDATA.csv

for /f "tokens=1-2 delims=," %%A in (\INDATA.csv) do (
set BB=%%B
if "!BB:~0,1!" == "+" (set BB=!BB:~1!)
set CC=00000000000!BB!
set CC=!CC:~-11!
echo %%A,%%B,"9!CC!" >>OUTDATA.csv
)

exit

また、for文を一行で書く場合は、以下のように&で繋いでください。
(if文は括弧で括ってください)
for /f "tokens=1-2 delims=," %%A in (\INDATA.csv) do (set BB=%%B&(if "!BB:~0,1!" == "+" (set BB=!BB:~1!))&set CC=00000000000!BB!&set CC=!CC:~-11!&echo %%A,%%B,"9!CC!" >>OUTDATA.csv)
    • good
    • 0
この回答へのお礼

迅速な対応助かりました
1行にしていてエラーなってたんですね!

お礼日時:2015/12/18 11:13

バッチを以下のようにすると可能です。




@echo off
setlocal enabledelayedexpansion

type NUL >OUTDATA.csv

for /f "tokens=1-2 delims=," %%A in (\INDATA.csv) do (
set CC=00000000000%%B
set CC=!CC:~-11!
echo %%A,%%B,"9!CC!" >>OUTDATA.csv
)

exit
この回答への補足あり
    • good
    • 0
この回答へのお礼

凄いです!やってみます!?桁の指定が要るのですね!うまくいかなかったらまたお願いします

お礼日時:2015/12/18 04:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!