新規無料会員登録で1000名様に電子コミック1000円分が当たる!!

USBメモリやSDカードにボリュームラベルを設定できると思いますが、そのメモリ内にあるファイルを指定する際に、ボリューム名でパス指定する方法はありますでしょうか?
必要性は、あるアプリケーションから、USBメモリやSDカードの特定のファイルに毎回決まったパスでアクセスしたいからです。

例えば
G:ドライブにTESTというボリューム名を付与したとし、そのトップにtest.txtというファイルがあるとします。
その際、通常は
G:\test.txt
でアクセスできると思うのですが、USBメモリやSDカードは、変わる可能性(※)があるので、ボリューム名であれば、自信で変えなければ変更されることはないと思うので、

TEST:\test.txt

などでアクセスできないかと考えています。


(※)
ドライブ名が変更されないように、ドライブ名を固定する方法が
http://oshiete.goo.ne.jp/qa/2384276.html
等で説明されておりますが、ここで指定したドライブ名が毎回固定される理屈がわかりません。
USBメモリやSDカードのユニークな識別子があって、その識別子をOSが覚えていて、そのメモリが接続されたときにその識別子に対応するドライブ名を割りつけるということなのでしょうか?そのような識別子が存在するのかがわかっていないためです。

A 回答 (2件)

あーちょっと私の方でも勘違いしていました


これはドライブレターが変わるのでは無く、指定したフォルダを仮想ドライブに作るというコマンドでしたね。
たとえばGドライブにtest.txtというファイルを作る場合。

まずUSBメモリー内にTESTフォルダを作りそこにtest.txtを入れる

USBメモリーを刺す

USBメモリーにLドライブが割り当てられる

バッチ起動

Gドライブ(仮想ドライブなので実際には存在しない)ができ、そこにG:¥TEXT¥test.txtというファイルが作られる。
(元のL:¥TEXT¥test.txtも残る。というかUSBメモリを抜くとG:¥TEXT¥test.txtにアクセスできない)

要は仮想のショートカットを作るみたいな感じです。
ちなみにGドライブが実際に存在していても問題ありません。ただしGドライブにG:¥TEXT¥test.txtがあると、上手く行きません。
    • good
    • 0
この回答へのお礼

大変申し訳ございません。
回答していただいていたのを見落としていました。。

回答ありがとうございました。

お礼日時:2013/08/18 17:57

結論から言うと無理です


ドライブレターはアルファベット一字のみです
ですからhttp://oshiete.goo.ne.jp/qa/2384276.htmlのやり方で固定した方が良いと思います
ちなみに理屈は

USBを刺す

仮のドライブレターが決まる

バッチファイル起動

仮のドライブレターが指定したドライブレターになる

って感じです

この回答への補足

Xaar1995 さん

ご回答ありがとうございます。
質問としては、ドライブレターは一字でも問題なく、毎回そのドライブ名で固定できればそれでよいです。

http://oshiete.goo.ne.jp/qa/2384276.html

の方法で固定すれば、毎回ドライブ名は同じになる理屈を教えていただいているのだと思いますが、

たとえば、あるUSBメモリ(※)を、G:ドライブに固定したとした場合、

USBを刺す

仮のドライブレターが決まる
⇒ここでは、L:ドライブが割り当てたられたとします。

バッチファイル起動
⇒このバッチファイルは、L:ドライブで割り当てられたものが、G:ドライブに固定されているのでL:をG:に変更するバッチファイルということでよろしいでしょうか?

仮のドライブレターが指定したドライブレターになる
⇒上記のバッチファイルが、L:からG:に変更してくれるということでよろしいでしょうか?

上記が正しいとした場合、(※)のUSBメモリが、G:に固定されているというのは、USBメモリを識別するものがないとG:に固定すべきというのがわからないと思います。
この識別はどのようにしているのでしょうか?

補足日時:2011/04/03 23:20
    • good
    • 0
この回答へのお礼

大変申し訳ございません。
回答していただいていたのを見落としていました。。

回答ありがとうございました。

お礼日時:2013/08/18 17:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QUSBメモリのドライブレターを固定したい

甲・乙・丙と3台のPC(OSはいずれもXP SP2)があり、HDDが甲はCのみ、乙はCとD、丙はCとDとEのドライブがある場合、USBメモリを挿すとCDドライブを飛ばしてEになったりFになったりします。
当方はUSBの中に各種ポータブルソフトインストールしており、例えば或るソフトの中にあるボタンを押せばブラウザが立ち上がると言う設定をしている場合、PC毎にドライブレターが変わると、ブラウザの階層が変わる(E\:と設定してるのに、メモリのドライブレターがF\:になっている)ので立ち上がらない、と言う事がままあります。
これを、どのPCに挿してもUSBのドライブレターをTに固定したいのです(Tは例で、SでもQでも良いです)
過去の質疑の中では「USB端子側を固定する」等の回答もお見受けしましたが、ネットカフェでのPCに挿しても自宅と同様のドライブレターにしたく、色々調べて「SubstManager」なるソフトも試してみましたが、どうにも判りません。
私の考えていることは、基本的に無理なのでしょうか?
それとも何か方法があるでしょうか?
何か良い知恵をお持ちの方、ご教示ください。

甲・乙・丙と3台のPC(OSはいずれもXP SP2)があり、HDDが甲はCのみ、乙はCとD、丙はCとDとEのドライブがある場合、USBメモリを挿すとCDドライブを飛ばしてEになったりFになったりします。
当方はUSBの中に各種ポータブルソフトインストールしており、例えば或るソフトの中にあるボタンを押せばブラウザが立ち上がると言う設定をしている場合、PC毎にドライブレターが変わると、ブラウザの階層が変わる(E\:と設定してるのに、メモリのドライブレターがF\:になっている)ので立ち上がらない、と言う事がままありま...続きを読む

Aベストアンサー

#1です。
SUBSTコマンドを利用してはどうでしょうか。
ルートディレクトリではできませんが、フォルダを作り、そこを特定のドライブ名のルートとすることができます。

1. USBメモリにフォルダを作る。仮にABCとします。
2. フォルダABC内に以下の記述を記入したバットコマンド場いるを作る。(仮に固定するドライブ名をZ:とします)
SUBST Z: %CD% (%CD%はカレントディレクトリを示す環境変数です)
3. 次回USBメモリを挿入した時、バッチファイルを実行します。
4. Z:ドライブがUSBメモリのABCフォルダに設定されます。

SUBSTコマンドの詳細は下記を参照ください

参考URL:http://itpro.nikkeibp.co.jp/article/Windows/20051025/223387/

Qファイルやディレクトリの存在確認を行う方法

ファイルをオープンするのはfopenでOKですが、ファイルやディレクトリの存在確認を行う方法が知りたいです。

何か組み合わせて作るものなのでしょうか?
perlとか便利な演算子があるのですが、C/C++って器用ではないですね。
これは処理系?依存の内容ですか?

私の環境は VC6, VC2005 Windows2000です。

Aベストアンサー

int access(const char* path, int mode);
int stat(const char* path, struct stat* sb);

かな?
MSDN を引くと _access_s() を使えとか書いてあるけど。

Qコマンドプロンプトの「%1」と「%~1」の違いがわからない

コマンドプロンプトの「%1」と「%~1」の違いがわからない
このサイトにhttp://ykr414.com/dos/bat.html
%~1は「全ての引用句(")を削除して%1を展開する。」とありますがよくわかりません。

%1は入力されたファイルのフルパスだと思っているのですけど。
"%1"=%~1ということでしょうか。

Aベストアンサー

%1は、バッチファイルに指定された「第一引数」です。
バッチファイルに限らず、プログラムを実行するときには引数を指定することができます。
単純に関連づけて実行するとかバッチファイルのアイコンにファイルをにドラッグドロップするとかだと、引数は一つない場合が多いですが、
実際にはショートカットを作ったりコマンドプロンプトから指定するとか、二つ以上の引数を指定することができます。
その際、引数と引数の間はスペースで区切られます。(引数指定全体の文字列を、スペースで区切って各引数に分割する)

一方、例えば、マイドキュメントフォルダ「C:\Documents and Settings\ユーザー名\My Documents」を引数にを指定した場合、そのままだとフォルダ名に空白が入ってるので、
%1=C:\Documents
%2=and
%3=Settings\ユーザー名\My
%4=Documents
と、指定した一つの名前が複数の引数に分断されてしまします。

そこで、こういう場合には、ダブルクオートでファイル名を括ります。
プログラム起動時の引数に 「"C:\Documents and Settings\ユーザー名\My Documents"」
といった感じで、ダブルクオートを付けたものを指定すると、
%1="C:\Documents and Settings\ユーザー名\My Documents"
と、括られた部分がまとめて一つの引数と取り扱われるようになります。
そして、この時%~1は
%~1=C:\Documents and Settings\ユーザー名\My Documents
になります。

%1と%~1の使い分けですが、
引数をこのままファイル名として使う時は、%1をそのまま使えば問題ないのです。
(バッチファイルから別のプログラムを起動するときにファイル指定するとかだったら、
%1を使えば、ダブルクオート込みで渡されるので、そのまま一つの引数としてつかます)

一方、フォルダを指定してそのフォルダ下のファイル名を作る、といった処理をしようとする時には、
ダブルクオートが邪魔なので、そういう時は%~1を使います。
たとえば、指定した引数をフォルダとして、そのフォルダ下の「新規作成データ.txt」ファイルを表すフルパスのファイル名を作りたい場合、

単に
 「%1\新規作成データ.txt」とすると、「"C:\Documents and Settings\ユーザー名\My Documents"\新規作成データ.txt」になってしまいますが、

「"%~1\新規作成データ.txt"」とすれば「"C:\Documents and Settings\ユーザー名\My Documents\新規作成データ.txt"」という、正しくクオートされたファイル名を作ることができます。

%1は、バッチファイルに指定された「第一引数」です。
バッチファイルに限らず、プログラムを実行するときには引数を指定することができます。
単純に関連づけて実行するとかバッチファイルのアイコンにファイルをにドラッグドロップするとかだと、引数は一つない場合が多いですが、
実際にはショートカットを作ったりコマンドプロンプトから指定するとか、二つ以上の引数を指定することができます。
その際、引数と引数の間はスペースで区切られます。(引数指定全体の文字列を、スペースで区切って各引数に分割す...続きを読む

Qディスク上のサイズとサイズはどうして違うんですか?

ファイルのプロパティ「全般」タブに表示されている「サイズ」と「ディスク上のサイズ」は、どっちが本当のサイズなのでしょうか?
どうしてサイズが違うのですか?
メールでファイルを送るときは、どっちのサイズを見ればいいのでしょうか?
これについて詳しく解説しているページがあったら、それもぜひ教えて下さい。
よろしくお願いします。

Aベストアンサー

「サイズ」はファイルの本当の大きさ、
「ディスク上のサイズ」はファイルが記録されているクラスタを合計した大きさです、
OSはファイルを幾つかのクラスタ(OSが管理するハードディスク上のブロック
の最小単位)を使ってHDDなどのメディアに保存します、

基本的に今のWindowsでは4KBのクラスタサイズで管理しているので例え1バイトのファイルでも「ディスク上のサイズ」4KBのサイズになってしまいます、
つまり常に「ディスク上のサイズ」の方が大きくなっているはずです、

メールに添付する場合は「サイズ」を確認するだけでOKです。

Qドライブ文字(レター)をZまで全て使い切ってしまったら…

お世話になります。

今現在ドライブレターを既にC~Zまで使用しております。
(諸事情があって、どうしても必要です)

そこで更にHDD増設なりすると次はどうなるのでしょうか?
アルファベットは使い切っております…。
(パーティションの結合・統合をしろという趣旨と離れたご回答はご遠慮下さい)

ご回答お待ちしております。

Aベストアンサー

したの参考URLに回答があります。

参考URL:http://questionbox.jp.msn.com/qa3831121.html?StatusCheck=ON

Qバッチファイルの変数について

以下のバッチファイルを作成して実行したのですが、PATH_NAMEの変数が
設定されず、ファイルコピーがされません。

どのように、コードを記載すれば良いのでしょうか。

ご教授願います。


REM コピーするファイル数を設定
SET /a FILE_NUM = 2

REM コピー元のパスを設定
SET PATH_P1=C:\Copy01.txt
SET PATH_P2=C:\SAMPLE\Copy02.txt

REM 上記で設定したファイルを順番にC:\TEST\へコピーする
SET /a N=1
:LOOP
SET /p PATH_NAME = PATH_P%N%
copy %PATH_NAME% C:\TEST\
if "%N%"== "FILE_NUM " (goto EXIT)
SET /a N=N+1
goto LOOP
:EXIT

Aベストアンサー

ん? 手元の Vista ではそれっぽい方法できちんと設定できてます.
最初の質問にあったプログラムに
・最初に setlocal enabledelayedexpansion を入れる
・SET /p PATH_NAME = PATH_P%N% を SET PATH_NAME=!PATH_P%N%! にする
・copy を (そんなファイルは当然ないので) echo %PATH_NAME% に変更
として, PATH_P1, PATH_P2 に与えたものが表示されることは確認しています.

「これでもPATH_NAMEが設定されません。」をどう確認したのか, ちょっと気になりますが....

QUSBメモリの名前を変更するには

右クリックで名前の変更をしようとしても入力はできるのですが、エンターを押した後もとの名前にも戻ってしまいます。

 変更する方法を教えてください。

 フォーマットすればそのときは変更できるのですが、後日挿入するとまた「昔の名前」が表示されて困っています。

Aベストアンサー

念のため確認ですが,
コンピュータ -> usbメモリのドライブを右クリック -> プロパティ の「全般」タブ の名前を変更していますよね。
添付画像の赤マーク部分参照。
---
スタート -> アクセサリ -> エクスプローラを右クリック -> 「管理者として実行」でも試してみてください。

Qバッチファイル 文字列にスペースがある場合

for /f %%A in ('dir /b /s c:\a aa*.pdf') do copy "%%A" D:\

これはcドライブのa aaというフォルダ名の中を検索するコードですが、
フォルダ名にスペースがあるため、うまく動きません。

"a aa"のように""で囲ってみましたが、駄目でした。

どうすれば良いのか、教えていただきたいので、お願いします。

Aベストアンサー

for /f %%A in ('dir /b /s c:\"a aa"\*.pdf') do echo copy "%%A" D:\
のようにecho でどのようなコマンドが実行されているか確認しましょう。

この記述ではdirコマンドで表示されるパスの中に空白があるため %%A には空白までの文字列しか代入されません。
以下のように修正して試してみてください。

for /f "delims=" %%A in ('dir /b /s c:\"a aa"\*.pdf') do copy "%%A" D:\

Qコマンドプロンプトでドライブ文字を変更させたい

BATファイルでHDDの接続場所のドライブ文字を変更させるプログラムが必要です。

やりたいことは、接続した自分のHDDのドライブ名を探し出して、そこのドライブ文字を変更させる
プログラムです。

いろいろと試してみたのですが、どうも上手くできませんでした。

何か方法を知っている方がいらっしゃったら、どうか教えて下さい。

以上、よろしくお願いいたします。

Aベストアンサー

diskpart というWindows付属のツールを使えば出来そうな気がします。
http://www.atmarkit.co.jp/ait/articles/0812/26/news119.html

「diskpart ドライブレター 変更」辺りで検索すると良さそうです。

Q【代替処理済のセクタ数】 を回復させるフリーソフト

【質問(1)】

現在、CrystalDiskInfo(クリスタルディスクインフォ)で健康状態が【異常】と出ております。

HDD→ TOSHIBA MK6465GSXN 640.1GB  使用時間10936時間


●(赤) 代替処理済のセクタ数 <現在値1> <最悪値1> <生の値 0000000007FE>

●(黄) 代替処理保留中のセクタ数 <現在値100> <最悪値100> <生の値 000000000001>

●(青) 回復不可能セクタ数<現在値100> < 最悪値100> <生の値 000000000000>


【代替処理済のセクタ数】 を、【回復させるフリーソフト】などは存在しないのでしょうか?




【質問(2)】
現在の状況はどんな状況??とてもヤバイ状況なの?詳しく知りたいです。





優しい方からの回答お待ちしております。
できましたら、リンクとかナシで回答くださるとたすかります。





※使用OSは、Win7

Aベストアンサー

>【代替処理済のセクタ数】 を、【回復させるフリーソフト】などは存在しないのでしょうか?

そんなものは存在しません。
"代替処理済のセクタ数"が増えたということは、HDDの一部の領域が物理的に死んだということです。
それをソフトで修復するなんてことは無理です。
物理的にどうにかなっているものをソフトで修復できるんだとしたらノーベル賞ものの大発明でしょうね。


>現在の状況はどんな状況??とてもヤバイ状況なの?詳しく知りたいです。

最悪の事態にはなっていませんが、代替処理済のセクタが大量発生していますので危険な状態です。
重要なデータのバックアップを取り、なるべく早くHDD交換を行いましょう。

ちなみに、本当にヤバイのは"回復不可能セクタ数"の数です。
これが1個でもあるということは、HDD内に保存されているデータが壊れている可能性があるってこと。
しかも、本当にデータが壊れているのか?壊れたデータがどれなのか?ということが特定不可能なので、いつの間にか重要なデータが壊れていたなんてことも十分に考えられます。
"回復不可能セクタ数"が1つでも出たら、すぐに重要なデータのバックアップを取り、HDD交換を行いましょう。

>【代替処理済のセクタ数】 を、【回復させるフリーソフト】などは存在しないのでしょうか?

そんなものは存在しません。
"代替処理済のセクタ数"が増えたということは、HDDの一部の領域が物理的に死んだということです。
それをソフトで修復するなんてことは無理です。
物理的にどうにかなっているものをソフトで修復できるんだとしたらノーベル賞ものの大発明でしょうね。


>現在の状況はどんな状況??とてもヤバイ状況なの?詳しく知りたいです。

最悪の事態にはなっていませんが、代替処理済のセクタが大...続きを読む


人気Q&Aランキング