- 1 名前:デフォルトの名無しさん [03/03/07 10:45]
- ハードウェアを直接叩くのはやっぱり楽しい!
DOSにおける開発について語りましょう。
- 852 名前:デフォルトの名無しさん [2008/05/27(火) 07:17:24 ]
- cat <in.txt >out.txt みたいなことできるdosのコマンドありませんか?
(winは全バージョン可能) typeだとstdinからは無理っぽいんですが… copy con out.txt とかひねくれたの思いついたんですけど、これはstdinじゃないです。 困ってるのでよろしくお願いします。
- 853 名前:デフォルトの名無しさん [2008/05/27(火) 07:25:51 ]
- more < in.txt
とかいけそうなんですけど、やりたい事は標準入出力を使ったファイルのコピーなんです。 moreだと--MORE--とかゴミがつくので期待はずれになります。 できれば、テキストでなくてバイナリも標準入出力を通す(通過のみで処理しないフィルタコマンド)のありませんでしょうか。
- 854 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 07:32:12 ]
- findとか。
- 855 名前:デフォルトの名無しさん [2008/05/27(火) 13:32:05 ]
- find,moreはテキストファイルはできるんですけど、バイナリでfind,moreすると転送先のファイルが壊れます。
試したらmoreでは上に書いたゴミはつきませんでした。 そのプログラムを自分で作れるんですけど、unixシェルの様にOS標準のを探してます。 他にないでしょうか。(特にバイナリ―ファイルの標準入力を受け付けるコマンド(フィルターとも言われます)です)
- 856 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 13:45:17 ]
- 問題を整理しよう。
要は、標準入出力をスルーで流せる標準コマンドがないか、ということでよろしいか。 で、findもmoreも(改行を特殊処理するからか)出力が壊れると言うことだね。 findstrはどうだろう。今手元のcmd.exeからfindstr /v "^$" a.exe > fooしたら大丈夫なようだ。 # "^$"でいいかどうかは検討が必要だけどね。
- 857 名前:デフォルトの名無しさん [2008/05/27(火) 14:41:43 ]
- やりたい事は、標準入力からファイルデータ(特にバイナリ)を入力するので、
もしそのコマンドなら、 findstr /v "^$" <a.exe > b.exe とかです。が、失敗します。
- 858 名前:デフォルトの名無しさん [2008/05/27(火) 14:47:53 ]
- テキストファイルのときは、
more <a.txt>b.txt で出来ますが(実質copy /a a.txt b.txtと同じだけど意味が違う) バイナリファイルだとこのコマンドでは出来ません。 若しくは玄人向けのdosコマンドレファレンスのサイトご存知ないでしょうか。
- 859 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 14:57:54 ]
- CATくらい自作したらいいんじゃないかい。
DOSのパイプは中間ファイルを作るからあんまり面白くないけど。 Win9x系のパイプも中間ファイル式だったのにがっかりした記憶がある。
- 860 名前:デフォルトの名無しさん [2008/05/27(火) 15:19:31 ]
- だから作れるんですけど…
findstrはstdinでリダイレクト入力使うとバグってる(仕様)みたいだから作りたくなるのは山々ですが
- 861 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:27:42 ]
- 技術力が高いスレで聞いてもいいんですけど。じゃ質問を少し変えると、
標準入力(リダイレクト < )を使ってテキスト・バイナリ・ファイルを作ることはで来ますか? できれば、後はパイプでできるんで・・・
- 862 名前:デフォルトの名無しさん [2008/05/27(火) 15:29:43 ]
- 標準入力の内容をそのままのデータで、ローカル・ディスク上のファイルにすることは出来ますか?と同じです。
- 863 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:51:04 ]
- DOSの仕様を回避するなら
type o.jpg | findstr ".*" > p.jpg になるんですけど、まず、このo.jpg(バイナリ)をstdinから作りたいんですけど、そのようなコマンドありますか?
- 864 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:54:27 ]
- stdin/stdoutが通常はテキストモードでオープンされているから不都合があるってことかな?
手元に資料はないけどバイナリモードへの切り替える方法はあったと思うよ。
- 865 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:56:02 ]
- 「標準」のコマンドだけだと、たぶん無理だと思う(wshでスクリプト組む場合は別)
#ActivePerlを標準コマンド扱いにして強制インスコして、binmodeで #スクリプト組めばいいとかアホな回答を思いついたw
- 866 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 23:07:10 ]
- それね、できたよ。でもね、なんか原始人みたいだから教えてあげないww
|

|