- 締切済み
VBSでコマンドプロンプトのカレントディレクトリを操作できますか?
どうにも行き詰まってしまったので質問させてください。 Windows2000なんですけど、コマンドプロンプトを開くと C:\Documents and Settings\Administrator> となっています。 cd c:\xxx\yyyと入力するとカレントディレクトリを変更することが出来ますが、VBSで同じようにしたい場合は、どのように書いたらいいのでしょうか?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- masahiro99
- ベストアンサー率57% (4/7)
詳細が分からないのでなんですが スクリプトをカレントディレクトリを変えるところで二つに分けることができるなら、バッチファイルを利用するって手もありますが。 バッチファイル start /wait cscript xxxxx1 cd c:\xxx\yyy start /wait cscript xxxxx2
- notnot
- ベストアンサー率47% (4900/10358)
#1です。 >Win2000でコマンドラインを使用してプリンタをインストールする機能があるので使用していますが WinFAQに載っている Rundll32 printui.dll,PrintUIEntry を使った方法ですか? それとも、 >コマンドプロンプトでプリンタのインストールを実行するときに、カレントディレクトリを変更してから、入力する箇所があります。 プリンタにインストール用バッチが付いていて、それを使おうとしているのでしょうか? もしそうなら、その手順を書いてみてください。ユーザー操作無しの自動化くらい出来そうに思いますけど。
- masahiro99
- ベストアンサー率57% (4/7)
#2への追記です。 そうそうWindows2000だったら標準で入っているWSHは2.0でした。こちらでWSH 5.6が配布されています。 http://www.asia.microsoft.com/japan/msdn/scripting/
- masahiro99
- ベストアンサー率57% (4/7)
WSH 5.6ではWshShellオブジェクトのCurrentDirectoryプロパティを操作することでカレントディレクトリを変更できます。(WSH 5.6で追加された機能) Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.CurrentDirectory = "c:\xxx\yyy" ただし、あくまでもスクリプト実行時のカレントディレクトリを変更するためのものです。
お礼
これはWSH5.6の機能なんですね。 Win2000でコマンドラインを使用してプリンタをインストールする機能があるので使用していますが、今後はユーザーにも各自で実行してもらおうと思っていました。 各ユーザーパソコンにインストールとなると、ん・・・厳しいです。 標準のWSH2.0でも使えればいいのになぁ・・・。
- notnot
- ベストアンサー率47% (4900/10358)
VBやVBAにはchdir命令がありますが、VBSにはそういう機能は無いようです。少なくともリファレンスには載ってません。 また、もし質問が、コマンドプロンプトからVBSスクリプトを実行して、実行終了後にコマンドプロンプトのカレントディレクトリが変わっているようなことが出来るかと言う意味なら、仮にVBSにchdir機能があっても不可能です。(VBS実行が別プロセスになるため)
お礼
VBSでは無理ですか・・・。 Win2000でコマンドラインを使用してプリンタをインストールする機能があるので使用していますが、今後はユーザーにも各自で実行してもらおうと思っていました。 コマンドプロンプトなど使ったことのないエンドユーザーのため、コマンドプロンプトを操作するとか、カレントディレクトリを変更してもらうのは無理かと思い、VBSでoneクリックで実行できないかと模索していたのです。 コマンドプロンプトでプリンタのインストールを実行するときに、カレントディレクトリを変更してから、入力する箇所があります。 VBSで同様のことを実行したら、エラーが出てしまいました。 コマンドプロンプトのカレントディレクトリ表示を変えるというより、VBSでプリンタのインストール操作が出来ればいいのです。 VBSも始めたばっかりなのですが、コマンドプロンプトでカレントディクレクトリを変更してから実行するものに対して、VBSで記述する何か別の方法があるのでしょうか?
補足
WinFAQに載っている Rundll32 printui.dll,PrintUIEntry を使った方法です。 手順を書きました。 1.ネットワークドライブの割り当て(P) ネットワーク上のファイルサーバーにプリンタドライバのinfファイルがあるため 2.PrinterAdmin のコピー ネットワーク上のファイルサーバーにあるnetmgmtフォルダを自分のCドライブにコピー 3.PrinterAdmin のインストール regsvr32 C:work\netmgmt\prnadmin.dll 4.プリンタIPアドレスの設定 cscript C:work\netmgmt\Portmgr.vbs -a -p IP_192.168.1.1 -t lpr -h 192.168.1.1 5.プリンタの追加 rundll32 printui.dll,PrintUIEntry /if /b test LBP3800 /f P:\My Documents\work\AddPrinter\win2k_xp\v10.61\CNL40J.INF /r IP_192.168.1.1 /m Canon LBP3800 LIPS コマンドプロンプトでは、4の時点でカレントディレクトリをC:work\netmgmtで変更してから実行しています。 VBSでは、カレントディレクトリの変更をしなくてもポートは作成されているようです。 実際に、プリンタのポートを見ると表示はされています。 しかし、5では、「プリンタ rundll コマンドに失敗しました。」と出ます。 パスにスペースが入っているからかと思い、色々ダブルクォーテーションを付けたりしましたが、ダメでした。 netmgmtフォルダをc:\winnt\system32へコピーもしてみましたがNGでした。 何かいい方法はありますでしょうか?