- ベストアンサー
コマンドプロンプトでのファイル操作について
コマンドプロンプトでのファイル操作について、ご存知のかたどうか教えてください。 a.txt b.txtという2つのファイルがあるとします。 <a.txtの内容> 1111 2222 3333 <b.txtの内容> aaaa bbbb cccc 上記の2つのファイルを読み取りc.txtというファイルへ以下のように 出力したいのですが、コマンドプロンプト(batでも問題ありません) にてできるのでしょうか? <c.txtの内容> 1111,aaaa 2222,bbbb 3333,cccc ご教授のほど、宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
お勧めではありませんが、無理かというと、無理ではありません。 二つのファイルを平行して読むことが出来ないので、一方のファイルは何回も読むことになります。 concat a.txt b.txt > c.txt 「concat.bat」の内容 @echo off set FILE1=%1 set FILE2=%2 set N=0 for /f "usebackq delims=" %%A in (%FILE1%) do ( set A=%%A call :sub set /a N+=1 ) goto :eof :sub set SKIP=skip=%N% if %N% == 0 set SKIP= for /f "usebackq %SKIP% delims=" %%B in (%FILE2%) do ( echo %A%,%%B goto :eof )
その他の回答 (3)
- Tacosan
- ベストアンサー率23% (3656/15482)
理論的には PowerShell なら余裕で可能, なはず. cmd.exe だと... 思い付かない. 無理な気がします.
お礼
ご回答、有難うございました。 今後とも宜しくお願いします。
それは無理です。 1111 2222 3333 aaaa bbbb cccc とか aaaa bbbb cccc 1111 2222 3333 なら、Copyコマンドのアペンドスイッチで可能ですが... エクセルで読み込んで、コピぺするとか、矩形領域での編集ができるテキストエディタとかなら可能です。 また、vbscriptでよいなら、 Option Explicit Dim objFSO ' FileSystemObject Dim objFile1 ' ファイル読み込み用 Dim objFile2 ' ファイル読み込み用 Dim objFile3 Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objFile1 = objFSO.OpenTextFile("a.txt") Set objFile2 = objFSO.OpenTextFile("b.txt") Set objFile3 = objFSO.OpenTextFile("c.txt", 2, TRUE) Do While objFile1.AtEndOfStream <> True objFile3.WriteLine(objFile1.ReadLine & "," & objFile2.ReadLine) Loop objFile1.Close objFile2.Close objFile3.Close Set objFile1 = Nothing Set objFile2 = Nothing Set objFile3 = Nothing Set objFSO = Nothing で、可能でした。なお、エラー対策は全く行っていません。 また、行数は「a.txt」に依存します。
お礼
ご回答、有難うございました。 コマンドプロンプトのFOR文等で色々と試みたのですが、 うまくいかず困ってました。 vbscriptのサンプル有難うございました。 是非、参考にさせて頂きます。 今後とも、宜しくお願いします。
- GAG666
- ベストアンサー率21% (244/1118)
これは出来ないはずです。 内部コマンドにしろ純正外部コマンドにしろ、 ファイル内容の改変には基本的に対応していないはずです。 リネーム・上書き・圧縮解凍は例外的に可能ですが、 提示例の場合ですとテキストエディタでの編集作業が必要なので いずれにせよDOSコマンドの領分ではありません。 どうしても、というのであれば まずマクロを作成しておき、それをコマンドで呼び出すしかありません。
お礼
ご回答、有難うございました。 コマンドプロンプトでは、無理なんですね。 今後とも宜しくお願いします。
お礼
ご回答有難うございました。 skipを使用することは、思いつかなかったです。 コードも有難うございました。 疑問に思っていたことが、すべて解決しました。 今後とも宜しくお願いします。