- 締切済み
テキストファイル連結のDOSコマンドについて
テキストファイル連結のDOSコマンドについて あるフォルダに下記の様なテキストファイル群があります a.txt、b.txt、c.txt、d.txt・・・・ これらをすべて連結するには copy *.txt all.txt とすればいいのですが、一つ一つのファイルの区切りに目に「■■■■■■■■■■■■■■■」のような区切り文字を入れたいのですが何らかの方法はありますでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- utakataXEX
- ベストアンサー率69% (711/1018)
#1 です。 >最後の一行どういう命令か全く理解できていませんw 締め切っていないので説明しておきますね。 >REM 各テキストファイルの末尾行に区切り文字を加えてマージ >FOR /F "usebackq delims==" %%i IN (`dir /b *.txt`) DO @type %%i>>all.txt & echo %delim%>>all.txt FOR /F "usebackq delims==" %%i IN (`コマンド1`) DO コマンド2 %%i これは「コマンド1の実行結果分、DO以下のコマンド2を繰り返す」と言う意味です。 %%i にはコマンド1の結果が入ります。 今回の場合、コマンド1は dir /b *.txt なので、dirコマンドで取得したテキストファイルの「名前だけ」が %%i に入ります。 1ファイルだけなら1回だけDO以下のコマンド2を処理するし、複数ファイルあるなら、そのファイル数分、繰り返しDO以下のコマンド2を処理します。 DO以下ののコマンド2 type %%i>>all.txt & echo %delim%>>all.txt は 「%%i(dir結果のテキストファイル)をall.txtの末尾に追記、その後で更に、%delim%(区切り文字が入った変数)をall.txtの末尾に追記」と言う意味です。
- utakataXEX
- ベストアンサー率69% (711/1018)
ファイル名やファイル数が、常に固定であれば、「■■■■■■■■■■■■■■■」が1行だけ格納されているファイル delim.txt を作っておいて、 copy a.txt + delim.txt + b.txt + delim.txt ...(中略)... all.txt で、できます。 この場合、コマンドを生成しないといけないので、ファイルが沢山ある場合は面倒ですけど。 ファイル数、ファイル名が不定の場合は、以下のようなバッチファイルを同じフォルダにおいて実行すれば行けると思います。 (まあ、常にこっちを使えばよいわけですが。。。) 「REM *****..」以下の行をコピーして、addDelimMerge.bat と言うファイルを作成してください。 最後のFOR文は1行です。回答が折り返していたら1行に修正して使用してください。 以下、バッチファイルの中身です。 REM ****************************************************** @echo off REM バッチ名:addDelimMerge.bat REM 機能:各テキストの末尾行に区切り文字を加えてマージする REM ****************************************************** REM 区切り文字の変数 set delim=■■■■■■■■■■■■■■■ REM 前回のall.txtを消しておく del all.txt REM 各テキストファイルの末尾行に区切り文字を加えてマージ FOR /F "usebackq delims==" %%i IN (`dir /b *.txt`) DO @type %%i>>all.txt & echo %delim%>>all.txt
お礼
最初はデスクトップにbatファイルを作成実行していたために動作せず。それにやっと気付きcd命令を付加して実行。all.txtができたと喜んだのも束の間で、連結は正常に出来ているのですが区切り文字が挿入されていませんでした。 調べたところ、テキストファイルは文字コードがUTF-8であり、コマンドで付加した文字はシフトJISで、UTF-8では何も表示されなかったようです。とりあえず区切り文字をアスキーの「----------」に変更しましたところ正常に出来ました(*⌒▽⌒*) しかしコマンドプロンプトもとても奥が深いのですね。目的は達したはいいのですが、最後の一行どういう命令か全く理解できていませんwこれを気にもう少し勉強したいと思います。本当にありがとうございました。