禁則文字のファイル名を付けたい!環境はWindowsXP。"をファイル名の一部に入れたいと思っているのですが、どうもうまくいきません。Dos・VBSなどでうまくできないかな?教えていただきたくよろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/10/26 15:31:10
  • 終了:2007/10/30 13:36:30

ベストアンサー

id:ardarim No.4

ardarim回答回数892ベストアンサー獲得回数1422007/10/27 00:33:13

ポイント80pt

どうしても試したいのであれば、仮想ディスクを使用して試すのが安全だと思います。

仮想ディスクは必要最小限の機能が完備されたFileDiskがお勧めです。


(0)FileDiskのインストール

filedisk.sys を C:\windows\system32\drivers にコピーする

filedisk.reg をダブルクリックし、レジストリを追加する

再起動する


(1)仮想ディスクを作成(&マウント)する

C:\>filedisk /mount 0 C:\temp\filedisk.img 8M x:

この例では仮想ディスク x: ドライブをマウントし、8MBの実体ファイル C:\temp\filedisk.img を作成します。


(2)仮想ディスクをフォーマットする

C:\>format /fs:fat x:

(3)仮想ディスク上に適当なファイルを作成する

C:\>echo test > x:\test.txt

(4)仮想ディスクをアンマウントする

C:\>filedisk /umount x:

(5)実体ファイル(C:\temp\filedisk.img)をバイナリエディタで編集し、ファイル名を " を含んだものに変更する

変更前

00004000 54 45 53 54 20 20 20 20 54 58 54 20 18 6A 18 02  TEST    TEXT .j..
00004010 5B 37 5B 37 00 00 19 02 5B 37 02 00 07 00 00 00  [7[7....[7.......

変更後(TEXT.TXTの先頭1文字を " に変更)

00004000 22 45 53 54 20 20 20 20 54 58 54 20 18 6A 18 02  "EST    TEXT .j..
00004010 5B 37 5B 37 00 00 19 02 5B 37 02 00 07 00 00 00  [7[7....[7.......

(6)仮想ディスクを再マウントする

C:\>filedisk /mount 0 C:\temp\filedisk.img x:


実行結果(例)

C:\>dir x:
 ドライブ X のボリューム ラベルがありません。
 ボリューム シリアル番号は 541A-FC5C です

 X:\ のディレクトリ

2007/10/27  00:16                 7 "est.txt
               1 個のファイル                   7 バイト
               0 個のディレクトリ       8,353,792 バイトの空き領域

削除もコピーも何にもできないファイルができました(笑)

id:harunoharuno

大変細かく作成方法を教えていただきありがとうございます。しかし、、

かなり手間がかかるんですね。今回は、試験の都合上できたらいいなと思いましたが、

OSのファイル制御が効かなくなるほどアブノーマルな状態のようですので別の方法を検討します。

2007/10/30 13:33:41

その他の回答(3件)

id:takosan No.1

takosan回答回数222ベストアンサー獲得回数72007/10/26 15:43:35

ポイント40pt

無理にファイル名にした場合OSがちゃんと扱えない文字なので、

その後読み出しも消去も移動もできないファイルができちゃいます。

ただのドライブ中のゴミにしかなりませんよ。

http://tinyurl.com/28quta

作るには、OSに無断でディスクのファイル管理エリアを書き換える事のできるソフトが必要です。

昔のMS-DOS時代にはフロッピー等のメディアのディレクトリエリアを直接書き換えるソフトがありましたね。

エコロジーとか、MS-DOS標準添付のdebug.exeでもできましたっけ。

id:harunoharuno

>>後読み出しも消去も移動もできないファイルができちゃいます

実際にそうなるのか気になります。変なファイル名を付けた結果を説明したHPなどありましたら教えてください。実体験ならそれもコメントしていただけるとうれしいです。

>>debug.exe

そこまでしないとできないものなのですか・・・。ちょっと難しそう。もっと気軽にできたりしないのかな?必要性が高まったらチャレンジしてみます。

2007/10/26 16:07:55
id:y-kawaz No.2

y-kawaz回答回数1419ベストアンサー獲得回数2252007/10/26 16:05:16

ポイント40pt

それらの文字を付けたファイル名を仮に作成できたとしてもそのファイル名で扱うことは出来ないので作れてもあまり意味が無いと思います。

ここでは Windows ではなくとりあえず Linux 上で hoge" などというファイル名を作って、ファイル共有経由で Windows でそのファイルがあるフォルダを開くと、_2X68Q~5 や HBRZRO~Y などというショートファイル名で表示されるのでなんだか分らなくなってしまうことが分ります。

またそのショートファイル名をアプリケーションによっては開くことが出来ますが、開けないことも多いです。また開けても上書き保存も出来ない状態になったりします。


素直に全角のダブルクオートを使うなどを落としどころとするのが良いと思います。

http://q.hatena.ne.jp/answer

id:harunoharuno

禁則文字を使ったときにどうなるのかが具体的に書かれているのは参考になります。プログラムの動作テストに、"文字を含むファイル名を使いたかったのですが無謀なようですね。

2007/10/26 16:11:37
id:KUROX No.3

KUROX回答回数3542ベストアンサー獲得回数1402007/10/26 17:04:22

ポイント40pt

FDでFATで作るのなら、リスクも低いし、作るのも簡単だと思います。

ファイル名が書かれている領域を無理やり書き換えたら、出来るはずです。

http://www.vector.co.jp/soft/dos/util/se043892.html

この辺のツールで作れると思われますが・・。

dirコマンドでファイル名は見れた記憶がありますが・・。

昔のMS-DOSの話で、現在の実装がどうなってるか不明なので、どうなるかは

分かりません。

id:ardarim No.4

ardarim回答回数892ベストアンサー獲得回数1422007/10/27 00:33:13ここでベストアンサー

ポイント80pt

どうしても試したいのであれば、仮想ディスクを使用して試すのが安全だと思います。

仮想ディスクは必要最小限の機能が完備されたFileDiskがお勧めです。


(0)FileDiskのインストール

filedisk.sys を C:\windows\system32\drivers にコピーする

filedisk.reg をダブルクリックし、レジストリを追加する

再起動する


(1)仮想ディスクを作成(&マウント)する

C:\>filedisk /mount 0 C:\temp\filedisk.img 8M x:

この例では仮想ディスク x: ドライブをマウントし、8MBの実体ファイル C:\temp\filedisk.img を作成します。


(2)仮想ディスクをフォーマットする

C:\>format /fs:fat x:

(3)仮想ディスク上に適当なファイルを作成する

C:\>echo test > x:\test.txt

(4)仮想ディスクをアンマウントする

C:\>filedisk /umount x:

(5)実体ファイル(C:\temp\filedisk.img)をバイナリエディタで編集し、ファイル名を " を含んだものに変更する

変更前

00004000 54 45 53 54 20 20 20 20 54 58 54 20 18 6A 18 02  TEST    TEXT .j..
00004010 5B 37 5B 37 00 00 19 02 5B 37 02 00 07 00 00 00  [7[7....[7.......

変更後(TEXT.TXTの先頭1文字を " に変更)

00004000 22 45 53 54 20 20 20 20 54 58 54 20 18 6A 18 02  "EST    TEXT .j..
00004010 5B 37 5B 37 00 00 19 02 5B 37 02 00 07 00 00 00  [7[7....[7.......

(6)仮想ディスクを再マウントする

C:\>filedisk /mount 0 C:\temp\filedisk.img x:


実行結果(例)

C:\>dir x:
 ドライブ X のボリューム ラベルがありません。
 ボリューム シリアル番号は 541A-FC5C です

 X:\ のディレクトリ

2007/10/27  00:16                 7 "est.txt
               1 個のファイル                   7 バイト
               0 個のディレクトリ       8,353,792 バイトの空き領域

削除もコピーも何にもできないファイルができました(笑)

id:harunoharuno

大変細かく作成方法を教えていただきありがとうございます。しかし、、

かなり手間がかかるんですね。今回は、試験の都合上できたらいいなと思いましたが、

OSのファイル制御が効かなくなるほどアブノーマルな状態のようですので別の方法を検討します。

2007/10/30 13:33:41
  • id:harunoharuno
    なお、"は禁則文字だよ!のみの解答はしないでくださいね。よろしくお願いします。
  • id:dev_zer0
    C言語でちょっと試してみましたが、fopen()でエラーになり
    errnoにENOENTが設定されてしまいますね

    プログラム上から"を含むファイルを作成するのはwindowsでは無理そうです
  • id:takabow
    Macで作られた無効文字が入ったファイルをどうやったかWindowsに持ってきてしまって、どうにもならなくなった記憶があります
  • id:cx20
    ちょっと気になったのでコメント欄にて失礼します。

    「"」をファイル名に含める方法は存じ上げておりませんが、無効な文字が含まれたファイルできてしまうと、エクスプローラから削除できなくなるケースがあります。お気を付け下さい。

    下記は、コマンドラインから、無効な文字を含むファイルを削除する方法です(NTFS の場合)
    (「\\?\ドライブ名\パス名\ファイル名」という表記を使うと、無効なファイル名も削除できるようです。)

    ■ @IT:Windows TIPS -- Tips:不正な名前のファイルを削除する
    http://www.atmarkit.co.jp/fwin2k/win2ktips/526badfile/badfile.html
    ■ NTFS ファイル システム上のファイルまたはフォルダを削除できない
    http://support.microsoft.com/kb/320081/ja

    ちなみに「\\?\ドライブ名\パス名\ファイル名」の表記を使用して「"」を含むファイル名を指定してみましたが、ファイル作成は行えませんでした。
  • id:takosan
    Windows2000あたりで、気づいたら読み出しも削除も名前変更もできない
    変なファイルが出来ていて往生した覚えがあります。
    なんで出来たかは未だに謎なままなのですが、多分OSのバグってやつでしょう。
    なのでまともな手順では出来ないと思います。セクタ直接アクセスもWinNT以降は
    禁止されていてOSから落とされましたね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません