• ベストアンサー

コマンドプロンプトでのファイル操作について

コマンドプロンプトでのファイル操作について、ご存知のかたどうか教えてください。 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 ご教授のほど、宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.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 )

maron_neo
質問者

お礼

ご回答有難うございました。 skipを使用することは、思いつかなかったです。 コードも有難うございました。 疑問に思っていたことが、すべて解決しました。 今後とも宜しくお願いします。

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

理論的には PowerShell なら余裕で可能, なはず. cmd.exe だと... 思い付かない. 無理な気がします.

maron_neo
質問者

お礼

ご回答、有難うございました。 今後とも宜しくお願いします。

noname#79209
noname#79209
回答No.2

それは無理です。 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」に依存します。

maron_neo
質問者

お礼

ご回答、有難うございました。 コマンドプロンプトのFOR文等で色々と試みたのですが、 うまくいかず困ってました。 vbscriptのサンプル有難うございました。 是非、参考にさせて頂きます。 今後とも、宜しくお願いします。

  • GAG666
  • ベストアンサー率21% (244/1118)
回答No.1

これは出来ないはずです。 内部コマンドにしろ純正外部コマンドにしろ、 ファイル内容の改変には基本的に対応していないはずです。 リネーム・上書き・圧縮解凍は例外的に可能ですが、 提示例の場合ですとテキストエディタでの編集作業が必要なので いずれにせよDOSコマンドの領分ではありません。 どうしても、というのであれば まずマクロを作成しておき、それをコマンドで呼び出すしかありません。

maron_neo
質問者

お礼

ご回答、有難うございました。 コマンドプロンプトでは、無理なんですね。 今後とも宜しくお願いします。

関連するQ&A