A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
#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の末尾に追記」と言う意味です。
No.1
- 回答日時:
ファイル名やファイル数が、常に固定であれば、「■■■■■■■■■■■■■■■」が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これを気にもう少し勉強したいと思います。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- その他(プログラミング・Web制作) 複数のテキストファイルの結合方法 2 2022/05/14 23:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/15 16:33
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルスクリプトでエラーが出ます
-
バッチで特定文字が含まれる先...
-
スラッシュ"/"を削除したい
-
unixのdiffコマンドの動作について
-
killコマンド実行時のメッセー...
-
Linuxで*をつかってファイル移...
-
【DOSコマンド】for文の中で変...
-
コマンド結果のリダイレクト
-
UNIXで、ディレクトリを比較し...
-
renameコマンドでファイル名か...
-
コマンドプロンプトでUSBメモリ...
-
*.txtファイルの最終行だけ参照...
-
フォルダ内のファイル名を取得する
-
コマンドプロンプト net user...
-
【Linux】findコマンドの表示順
-
標準出力とリダイレクトを同時...
-
CentOS/リダイレクションに改行...
-
Dirコマンドでフォルダ内ファイ...
-
エクセルの表にヘンな枠が・・・
-
pingは正常なのにtracerouteで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェルスクリプトでエラーが出ます
-
バッチで特定文字が含まれる先...
-
*.txtファイルの最終行だけ参照...
-
【DOSコマンド】for文の中で変...
-
【Linux】findコマンドの表示順
-
Linuxで*をつかってファイル移...
-
○行目から□行目だけを表示する...
-
UNIXで、ディレクトリを比較し...
-
renameコマンドでファイル名か...
-
CentOS/リダイレクションに改行...
-
OSXで常に最後に表示される文字...
-
スラッシュ"/"を削除したい
-
標準出力とリダイレクトを同時...
-
ショートカットのリンク先(フ...
-
unixのdiffコマンドの動作について
-
windows7でmingwのgrepで漢字の...
-
euctosj を使用してファイル名...
-
ファイルの先頭に文字を追加す...
-
killコマンド実行時のメッセー...
-
コマンドプロンプト net user...
おすすめ情報