windows7にてopendirを実行し、
僒僀僐僶僗僞乕僘_001.jpg ※ここに書いたら文字化けしてるかも
などのファイル名が入ったフォルダを読み取ると、
"僞乕僘~1.JPG" や "僞EE94~1.JPG"
などのもとのファイル名とは違う文字列(と言うよりおそらくバイナリ自体がすでに違う)を得られます。
これについて困ってますが、解説や解決法、その他、なんでもいいのでお助け下さい。
(よくわかりませんが、もしかしてwindows先生に問題があるのではないかと言う疑いを持ちはじめても居ます。が、結局よく分かりません)。
No.1ベストアンサー
- 回答日時:
>"僞乕僘~1.JPG" や "僞EE94~1.JPG"
は、古いOSから伝統的に引き継いでいる
8キャラクタ文字+ピリオド(.)+3キャラクタ文字(拡張子)
形式の別名のファイル名です。
これはWindowsで作成したファイルにも存在し自動生成されます。
自動生成の時に失敗しているようなので、Windowsで扱えないキャラクタ文字を使用していると判断できます。
opendirの仕様が分かりませんが、Windowsで正常に読み書きできないキャラクタ文字を使っていることが疑われますね。
現状では読み込みは問題なく行えるでしょうが、読み込んだファイルを上書きすると何らかの障害が起きる可能性はあります。
ファイル名に使用する文字について良く確認したうえでopendirを使うことを勧めます。
ありがとうございます。
ファイル名はwindowsの内部的に複数用意されていると言うことでしょうか?
ファイル名を置換してまともなリネームしたいのですが、どのようにするのが良いでしょうか
(ところで、ファイラーによっても表示させた時表示するもじが違うのですが、その辺はなんなんでしょうか?)
とりあえず、番号順に並んでいる画像なので、"僒僀僐僶僗僞乕僘_001.jpg" のうち
001は取り出さなければならないのですが、opendirで取り出したファイル名からはその数字は失われているようです。
No.2
- 回答日時:
Windows は、マイクロソフト社が以前販売していたOS(MS-DOS)とファイルの兼ね合いで、
「長いファイル名」と「短いファイル名」の両方を持たせ互換性を維持させています。
(実はこれ、結構有用だったりします)
実行時には一般的にどちらのファイル名を指定しても問題はありません。
これは Windows 95 から採用されているものです。
コマンドプロンプトで「dirコマンド」を実行すると、特に指定していない限り長いファイル名で表示されますが、
「/x」のオプションを付けて実行すると、短いファイル名で表示されます。
すべてのディレクトリ(フォルダ)でどちらのファイル名も存在することを確認してみると良いでしょう。
このように2つファイル名を持っているのがWindowsのシステムです。
…解説はこんなもんでいいでしょうか。
質問そのモノの回答はNo.1で行っていますのでそちらを参照願います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- その他(ソフトウェア) 画像のファイル形式、拡張子が変わると、性能が変わると思うのですが、ファイル名の「jpg、png、do 8 2022/08/10 13:37
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Google Drive 【Googleドライブ】ドライブ上内でのフォルダ移行について 4 2022/11/30 12:50
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Excel(エクセル) Excel 毎日手作業で時間がかかって、泣きたいです、、、VBAのプロの方、助けてください。。。 3 2022/10/25 04:26
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- C言語・C++・C# C言語で 英文字のみからなる文字列、”Radar”、”WasItACatISaw”、”a”、””(空 5 2022/12/20 15:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba dir の相対パス
-
chdirがうまくできない
-
batファイルでrenameができませ...
-
Perlで フォルダ内の全て...
-
サーバーにある特定の拡張子フ...
-
Director拡張子
-
バッチファイルの作り方(CSV→...
-
MATLAB グローバル変数の宣言
-
VBAでCSVファイルの特定行を書...
-
ExcelをCSV書き出す場合のシー...
-
fopenでディレクトリ内の全ファ...
-
Perlで特定文字列から特定文字...
-
Perlで特定行から特定行までを...
-
awkスクリプトでダブルクォーテ...
-
C言語のバイナリモードでのfsca...
-
VBAで巨大なファイルの途中から...
-
openした後、closeしないでプロ...
-
ファイル全てを .xlsm に変更し...
-
DOSコマンドで、標準出力を出力...
-
Perl utf8上でshiftjisをデコード
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
batファイルでrenameができませ...
-
vba dir の相対パス
-
パスから最後のディレクトリだ...
-
Windowsで複数のファイルを同じ...
-
readdir()で得られるファイル・...
-
FindFirstFileとFindNextFileで...
-
ディレクトリ名を取得したい
-
ディレクトリの判別
-
dos変数の%~dp0は powershellで...
-
Net::FTPを使いファイル一覧の...
-
Perlで フォルダ内の全て...
-
複数のCSVファイルを一つのCSV...
-
makefileでファイルをコピー(...
-
C言語でファイル名を取得
-
サーバーにある特定の拡張子フ...
-
LinuxのC言語で、ファイル名の...
-
perlのNet::FTPで、ファイルか...
-
シンボリックリンクを検出でき...
-
正規表現で、特定のファイル名...
-
ファイル名の文字コード(?)と...
おすすめ情報