csvの1行を1ファイル出力って可能でしょうNo.24519
スーパーT さん 08/02/24 11:28
 
お世話になります。

1つのcsvファイルがあり、内容は3行です。
aaa,xxx
bbb,yyy
ccc,zzz

これを
ファイル名 aaa.txt (ファイル内容はxxx)
ファイル名 bbb.txt (ファイル内容はyyy)
ファイル名 ccc.txt (ファイル内容はzzz)
3ファイルに出力したいのですが可能でしょうか?

aaa,bbb,cccは任意に設定します。
xxx,yyy,zzzはlongtextになります。

よろしくお願いいたします。


[ ]
RE:24519 csvの1行を1ファイル出力って可No.24520
h-tom さん 08/02/24 13:30
 

h-tom です。

>1つのcsvファイルがあり、内容は3行です。
>aaa,xxx
>bbb,yyy
>ccc,zzz
>
>これを
>ファイル名 aaa.txt (ファイル内容はxxx)
>ファイル名 bbb.txt (ファイル内容はyyy)
>ファイル名 ccc.txt (ファイル内容はzzz)
>3ファイルに出力したいのですが可能でしょうか?
マクロ使うまでもないかな?
NT系OSなら、コマンドプロンプトに以下のように入力して下さい。
(test.csvには実際のファイル名を指定すること。)
FOR /F "tokens=1,2* delims=," %i in (test.csv) do @echo %j> %i.txt

[ ]
RE:24520 csvの1行を1ファイル出力って可No.24521
スーパーT さん 08/02/24 17:13
 
>h-tom です。
>マクロ使うまでもないかな?
>NT系OSなら、コマンドプロンプトに以下のように入力して下さい。
>(test.csvには実際のファイル名を指定すること。)
>FOR /F "tokens=1,2* delims=," %i in (test.csv) do @echo %j> %i.txt

h-tom 様
ありがとうございます。

hidemaruで何とかなりませんか、
秀さんがいいんです。秀丸が好きなんです。
勝手言って申し訳ございません。
よろしくお願いいたします。


[ ]
RE:24521 csvの1行を1ファイル出力って可No.24522
山紫水明 さん 08/02/24 21:05
 
 スーパーTさん,

>hidemaruで何とかなりませんか、
次のマクロでできませんか。
//--------------------------------------------
#handle = hidemaruhandle(0);
gofiletop;
while( 1 ) {
    searchdown ",";
    if( result == false ) break;
    $a = gettext2(0, lineno, column, lineno);
    $b = gettext2(column + 1, lineno, linelen2, lineno);
    openfile "/h";
    insert $b + "\n";
    saveas $a;
    setactivehidemaru #handle;
    movetolineno 1, lineno + 1;
    #i = #i + 1;
}
endmacro;
//--------------------------------------------
     では, (^^)/~
                                        山紫水明(ユーザー)
                                        SANSHISUIMEI

[ ]
RE:24522 csvの1行を1ファイル出力って可No.24523
スーパーT さん 08/02/25 03:25
 
山紫水明 様

ありがとうございます。
完璧です。
大御所の登場に恐縮です。

もしよろしければ改善をお願いしたい点が2点あります。

このマクロをフォルダ内で対象ファイルに対して
バッチで処理しますので
1.終了時に出力ファイルを表示しないようにならないでしょうか。
2.出力ファイルの属性をtxtにならないでしょうか。

勝手言いまして申し訳ございません。
迅速なご対応に大変感謝しております。

[ ]
RE:24523 csvの1行を1ファイル出力って可No.24526
山紫水明 さん 08/02/25 16:42
 
 スーパーTさん,

>バッチで処理しますので
 これがよくわかりませんが,目的ファイルを開いた状態で実行するということ
であれば,次のようにすればいいでしょう。
//--------------------------------------------
#handle = hidemaruhandle(0);
gofiletop;
while( 1 ) {
    searchdown ",";
    if( result == false ) break;
    $a = gettext2( 0, lineno, column, lineno );
    $b = gettext2( column + 1, lineno, linelen2, lineno );
    openfile "/h";
    insert $b + "\n";
    saveas $a + ".txt";
    #temphandle = hidemaruhandle(0);
    setactivehidemaru #handle;
    movetolineno 1, lineno + 1;
    closehidemaru #temphandle;
}
message "終わりました。";
endmacro;
//--------------------------------------------

最後のメッセージ不要であれば,下から2行目を削除してください。

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:24526 csvの1行を1ファイル出力って可No.24527
スーパーT さん 08/02/25 17:07
 
山紫水明 様

完璧でございます。

お力添え感謝いたします。
大変ありがとうございます。


[ ]
RE:24527 csvの1行を1ファイル出力って可No.24578
スーパーT さん 08/03/04 02:56
 
お世話になります。

処理を行ってわかったのですが
入力(対象)ファイルはutf-8でしたが
出力ファイルがshift-jisになってしまいました。

ここでお願いでございます。
出力ファイルをutf-8にすることは可能でしょうか?

もしくは出力された複数のファイルのエンコード種類を
shift-jisからutf-8に一括で変えることは可能でしょうか?

何卒よろしくお願いいたします。

[ ]
RE:24578 csvの1行を1ファイル出力って可No.24580
秀丸担当 さん 08/03/04 09:17
 

>ここでお願いでございます。
>出力ファイルをutf-8にすることは可能でしょうか?

横から失礼ですが、
    saveas $a + ".txt";
の部分を
    saveas $a + ".txt",utf8;
というようにすればいいと思います。

[ ]
RE:24580 csvの1行を1ファイル出力って可No.24587
スーパーT さん 08/03/05 03:38
 
素早いご対応ありがとうございます。
感謝いたします。

[ ]