現在は、自分の作成したアプリケーションから自分のPC内ファイルに対して色々タスクをこなすのにバッチファイルを書きださせて処理させているのですが、この方法ではネットワークドライブ上にあるファイルにも対応させようとした際に壁になって困ってます。
こういう時に勝手にカレントドライブを作成したりするのは強引に感じるのでできればやりたくありません。
いい方法をご存知な方よろしくお願いします。
ネットワークドライブ上では ファイル操作とかのバッチファイルは 正常に動かないですよね。
具体的に何をしたいか わかれば それをテストしてみることは可能ですが。
ネットワークの共有フォルダを
「Cドライブ」もようにドライブ文字を割り当てると可能です。
ネットワークドライブの割り当て方法(Windiws版 ※Windows7対応)
http://www.tku.ac.jp/~densan/local/n-drive/networkdrive-win.html
カレントフォルダを変更する際は、
cd /d h:
(Hドライブの場合)
と入力します。
SweetSmile1978 さんありがとうございます。
「自分の作成したアプリケーションから自分のPC内ファイルに対して色々タスクをこなすのにバッチファイルを書きださせて処理させているのですが・・・」を満たすためには、ユーザにネットワークドライブの設定をお願いしないといけないので、今回の事情ではあまりいい手でない気がします。
(ですから「ネットワークドライブの指定なしで」というのを条件に書きました)
余談ですが、カレントドライブの変更では「cd /d」は省略可能ですね。
不可能です。
pushd "%~dp0" ~ popd を使えばネットワークドライブの作成~破棄を自動化することはできますが、ネットワークドライブの作成自体を回避できるわけではありません。一時的に作成されるネットワークドライブは普通にシステム全体から参照可能です。(とりあえず pushd /? と popd /? を読みましょう)
そもそもDOS時代からの伝統に則り、Windowsでのカレントディレクトリという概念はカレントドライブ単位で存在するものであるため、「ドライブ」がないUNCパスについてのカレントディレクトリというのは機構上あり得ないのです。まあ、将来的に「ドライブに属さないドライブ」とかいうような非実在ドライブの構文が導入されれば話は変わるかもしれませんが、今のところそんなものはありません。
よって
の二択になります。ただし後者の場合、バッチから呼び出されるコマンドの側もすべてUNCパスに対して正しく動作することが前提になりますが。
ghostさんありがとうございます。
@ITの記事などを読んで勉強したいと思います。
http://www.atmarkit.co.jp/fwin2k/win2ktips/792pushd/pushd.html
pushd/popdでフォルダを移動する - @IT
■一時的にネットワークドライブを割り当てる方法
pushd \\computer1\project1\program1
ただ認証がある場合は、ダイアログとか表示されるのでバッチに向いてるかどうかは不明です。
事前に認証してある場合は、OKです。
参考:
Windowsのコマンドプロンプトを便利に使うための10のミニテクニック
http://codezine.jp/article/detail/3879?p=2
-------
■コマンドで、ネットワークドライブとして割り当てる方法
net use ドライブ文字: \\コンピュータ名\共有フォルダ名\フォルダ名 /user:ユーザー名 パスワード
pretaroe さんありがとうございます。
net useでは、色々オプションが有るようですね。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060725/244263/
管理者必見! ネットワーク・コマンド集 - net useコマンド:ITpro
/delete...生成したネットワークマッピングを開放
http://d.hatena.ne.jp/bontaki/20060722/1153535591
2013/01/30 16:24:28pushd %~dp0
これを実行するとよいようです。
takntさんありがとうございます!勉強になります。
2013/01/30 18:08:43是非参考にさせて頂きます。