• 締切済み

binaryとasciiファイルの判別方法

ある対象ファイル(約1000個)をDOSコマンド or プログラムを使用して、その データがbinary形式かテキスト形式か判別できるようなものはありますでしょ うか?  メモ帳などを開いて確認すればよいのですが、対象ファイルが多すぎて話しに なりません。また、拡張子で判別もできません(全ファイル同じ拡張子のため) UNIXにftpで転送して、fileコマンドで判別してしまえば、簡単だとは思います が、NT側で処理できないものでしょうか? UNIXでfileコマンドで判別できる ということは、どこかに判別してきるキーのようなものがある気もするんです が。。。まだ勉強不足の私に教えてください、宜しくお願い致します。

みんなの回答

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.3

>ASCIIファイルの末尾は「EOF(1A)」ですね。 これは一般的には無いと考えた方がいいと思います。 本来は確かCP/M時代の仕様です。 ファイルサイズの情報が無かったために,明示的にエンドマークであるEOFを入れる必要があったためだったと聞いた覚えがあります。 MS-DOS時代でも、つけるタイプの物と、つけないタイプの物が存在しました。

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.2

fileは確か・・・/etc/magic あたりにパターン定義してある ファイルがあって、特定の種類のファイルはそれで ヘッダ判別みたいなことをしていたと思います。 テキストファイルかどうかは、例えば512byte読み込んで, 中身に可読な文字や改行、タブ等以外のコードが含まれていれば binary って判定だったかも知れません。 実際に何をしているかは,LinuxでもFreeBSDでもでfileのソースコードを見るのが早いでしょう(^^; また、cygwinっていうWin32上で動作するunix環境がありますが、fileは入っていませんでしたが, 多分 fileのソースを持ってきてコンパイルすれば、 使えるんじゃないかと思います。

Salsa_de_Salsa
質問者

お礼

ありがとうございました、参考にさせていただきます。今回の場合、1回限りの ファイルの判別作業となりますので、cygwinをセットアップしないで運用で カバーしてみたいと思います。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

ASCIIファイルの末尾は「EOF(1A)」ですね。 バッチファイルを作って、TYPEして、その結果を別フォルダにでもリダイレクトして、FCで比較してみるとか。

関連するQ&A

  • DOS上で、UNIXのShellに代替されるものってありますか?

    あるPCから別のマシンにftpを使ってファイルを転送するのですが、作業者(ファイル転送をする人)がftpコマンドなどが使えないため、 パソコンのDOS画面(コマンド実行)から、キーをひとつたたけば、ファイル転送してくれる仕組みをつくりたいのです。(ファイル名は固定のものが数個。転送するのは1ファイル単位でまとめての転送はしない) UNIX上ならftpコマンドを発行するシェルを作れば済むと思うのですが、DOS上ではどうなのでしょうか? UNIXのシェルのようなものはあるのでしょうか?

  • ファイルの種類の調査

    Windowsには拡張子不明のファイルの種類を調査するようなDOSコマンドやアプリはありませんでしょうか? UNIXのfileコマンドのようなものを探しているんですが‥ デフォルトでついているソフト以外でもフリーウェア等ありましたら教えてください。

  • なぜ sftp には ASCIIとBINARYといったモードがないのでしょうか?

    FTPには、 asciiとbinaryモードがありテキストファイルなどは asciiで転送すればプラットフォームに合わせて変換してくれますが、なぜ sftpにはそのようなモードがないのでしようか?

  • PEAR putRecursive()を使ったアップロードでの転送モードの自動判別のさせ方

    PEARのputRecursive()を使って、フォルダをFTPサーバへアップロードするプログラムを組んでいます。 フォルダ(A_folderとします)をアップロードすると、中のファイルがBINARYで転送されてしまい困っています。 (フォルダの中には拡張子の違う複数のファイルがあります。) PEARのマニュアルを読むと、「(転送モードを指定しなかった場合)ファイルの拡張子からモードを決定します。」とあります。 そのため、ファイルごと、putRecursive()が転送モードを自動判別し、アップロードすると考えていました。 が、違うようです。 extensions.iniというファイルも絡んでくるようなのですが、いまいちスキル不足で不明な点が多く、行き詰まっています。 putRecursive()を使って、ファイルごとに正しい転送モードでアップするには、どのようにプログラムを組めばよいのでしょうか。 是非ご教示、ご助言お願いします。 フォルダの構成 A_folder(フォルダ)の配下に、1.cgi、2.css、3.jpgがあります。 実際に書いたソース行 $ftp->putRecursive($local_folder ,$remote_folder , true);

    • 締切済み
    • PHP
  • UNIXからWindowsへのファイル転送

    UNIXからWindowsサーバーへFTP以外でファイル転送をしようと考えています。 方法としてはSFTPがあると思いますが、 Windowsサーバー側に条件はなにがありますでしょうか? IISでFTPを構築しないとだめでしょうか? UNIXでsftpコマンドは実行できることを確認しています。 また、逆のパターンとして WindowsサーバーからUNIXサーバーへWinSCPでのファイル転送の場合は WinSCPを導入するだけでよいでしょうか? 転送する側でIISでのFTP設定も必要でしょうか? 初歩的な質問で申し訳ございませんが、 ご教授の程よろしくお願いいたします。

  • MS-DOSで空ファイルのコピー

    win98のDOSプロンプト使用時に疑問に思ったことです。 DOSコマンドの「copy」についてなのですが ファイル容量"0"の空ファイルは、コピーできないものなのでしょうか? DOSで空ファイルをコピーしようとした時、 「0個のファイルをコピーしました」の結果が返ってきます。 もちろんコピー先ファイルは存在しません。 同じくDOSの「move」コマンドでの空ファイルの移動は可能ですし、 UNIXでは空ファイルのコピーはできました。 また、winXPのコマンドプロンプトで行うと、空ファイルもコピーできました。 NT系のはMS-DOSではないので、動作が違ってもおかしくはないとは思いますが。 理由が単に、DOSが「空ファイルはコピーできない仕組み」を持っているのか、 はたまた他に原因があるのか。 ご教授いただきたく、よろしくお願いいたします。

  • bashからFTPコマンドのステータスを調べる方法

    bashからFTPコマンドのステータスを調べる方法 シェルでFTPによるファイル転送を行っていますが、FTPが成功したかどうかをシェル側で受け取ることはできますか? FTP転送に失敗したら、3回やりなおして、それでダメならあきらめるというスクリプトにしたいです。 <サンプル> /usr/bin/ftp -n -v hostname << EOF user user1 passwd1 binary put file1 bye EOF

  • ファイル転送が完了したことを判定する

    UNIX上のシェルにて、大容量のファイル転送が完了したかどうか判定する方法はないでしょうか?test -r $対象ファイル をすると転送中でも読み取り可能となってしまい、ファイルが転送完了したか判断できません。wcコマンドやcatコマンドを使用すると一応エラーではかえってくるのですがそんな方法しかないのかな?と疑問を感じています・・・。

  • ファイルの冒頭からXバイトだけを切り出すソフト(long file name対応)を探しています

    ちなみに、UNIXや、嘗てDOSの世界では、Head.exeなる小回りきくtoolがありました。それをNetで探してダウンロードして使用したら、古いだけあって、long file nameに対応していませんでした。 使用対象ファイルは、実はbinaryなので、冒頭からX行でなく、Xバイト と指定できるソフトウエアだと嬉しいです。また、実は、対象ファイルも大きく、50MBぐらいありますのでそういうサイズにも、対応しているものが見つかると嬉しいです。 windows2000pro, thinkpadです。どうぞよろしくお願いします。

  • Windows->Unixへのデータ転送

    Unix側のdiskに障害があり、データが全て消えてしまいました。diskを交換後、Windowsにあるバックアップデータをftp転送していますが、最初のうちはそれなりの速度でしたが、Unix側のデータが多くなるにつれてだんだん遅くなってきています。(現在、2GB/24H) 他に、早く転送できる方法はありませんか? Unix:SunOS 5.5.1 Windows:W2K SP4 最初は、WinのDOSプロンプトより、FTP mputをしましたが、9,999件のファイル転送で終わってしまいました。 そのときの所要時間は3H位で終わりました。この方法では全て転送できないので、現在は、Winの『ネットプレースの追加』でUnixサーバを定義し、エクスプローラ形式のftp転送で行っています。尚、データはHPGLやTIFFといった画像データで全体のデータは約50GBです。 良きアドバイスをお待ちしています。