共有フォルダ上で,マウスだけで一発でコマンドプロンプトを開く方法 (UNCパスへのpushdをバッチクリックで済ませる)
「 \\127.0.0.1\hoge 」のような形式のパスをUNCパスという。
ネットワーク上で共有されているフォルダのパスである。
UNCパス上でコマンドプロンプトを開こうとすると,
Z:\>cd \\127.0.0.1\hoge '\\127.0.0.1\hoge' CMD では UNC パスは現在のディレクトリとしてサポートされません。
のようにエラーが出る。
エラー回避策としては,cd のかわりに pushd コマンドを打ち込めばよいのだが,もっと簡単に操作できないものか?*1
解決策
以下のスクリプトを共有フォルダ上に置いておけばいいのだ。
ダブルクリックするだけで,そのフォルダがカレントディレクトリになった状態でコマンドプロンプトが開く。
cmd.js
// ダブルクリックすると, // 現在のディレクトリをカレントディレクトリにしてコマンドプロンプトを開きます。 // 注:パスに日本語を含むと正常に動作しません。 var ws = WScript.CreateObject("WScript.Shell"); var dir = ws.CurrentDirectory; ws.Run("cmd.exe"); WScript.Sleep( 500 ); var str = "pushd " + dir; for( var i = 0, len = str.length; i < len; ++i ) { ws.SendKeys( str.charAt(i) ); } ws.SendKeys( "{ENTER}" );
※日本語パスには未対応。
ダブルクリックしたときの動作例:
'\\127.0.0.1\hoge' 上記の現在のディレクトリで CMD.EXE を開始しました。 UNC パスはサポートされません。Windows ディレクトリを既定で使用します。 Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\WINDOWS>pushd \\127.0.0.1\hoge Z:\>dir Z:\ のディレクトリ 2009/03/05 21:38 <DIR> . 2009/03/05 21:38 <DIR> .. 2009/03/05 21:39 428 cmd.js 3 個のファイル 852 バイト 2 個のディレクトリ 13,553,393,664 バイトの空き領域
DOS窓を開いて,pushd \\127.0.0.1\hoge(スクリプトの存在するフォルダ名) を自動で打ち込んでくれる。
それが終われば,dirなどの通常のコマンドが共有フォルダ上で実行できる。
ネットワーク上のドライブであれこれしたい時に便利だろう。
補足
「共有フォルダ上でdirがしたい」という事だけならば,net view でも可能。
net コマンドの使い方
http://www.atmarkit.co.jp/fwin2k/win2ktips/258netcommand/netcommand.html
*1:pushdとpopdの使い方はこちらで述べた。 http://d.hatena.ne.jp/language_and_engineering/20081028/1225160338