註: このプログラム集の機能のほとんどは、現在は Windows 用 "vmw.exe" と DOS 用 "vmw.com", "vmtsr.com" に含まれています(http://chitchat.at.infoseek.co.jp/vmware/vmtoolsj.html)。 また、このプログラム集は VMware Workstation 3.x で開発されそれ以降更新されていないため、現在の VMware プロダクトでは動作しなかったり、異なる動作をする可能性があります。
VMware Command Line Tools は、VMware の非公開 "バックドア" 機能を 使用するための、単純で小さな DOS/Windows 用のコマンドラインプログラム集です。 以下のプログラムが含まれています:
| 名称 | 説明 |
|---|---|
| vmchk | VMware の中で動いているかどうかをチェックします。 |
| vmdev | 仮想デバイス(floppy, CD, soundなど)を接続、切断します。 |
| vmpref | copy & paste、時刻同期などの VMware GUI オプション設定の 有効、無効を切り替えます。 |
| vmtime | ゲストのシステム時刻をホストに同期します。 ただし現在はただの "ワンショット" プログラムなので 長時間同期させておくには、定期的にこれを実行する必要があります。 |
| vmcopy | テキストデータをゲストからホストのクリップボードにコピーします。 DOS にはクリップボード機能がないので、標準入力からテキストを読み込みます。 |
| vmscr | vmcopy と同じくテキストデータをホストにコピーしますが、標準入力
ではなく画面上からテキストを読み取ります。 要は DOS 版の "スクリーンショット" です。 |
| vmpaste | ホストのクリップボードから、テキストをペーストします。 DOS にはクリップボード機能がないので、テキストは標準出力に書き出します。 |
| vmpop | 冗談プログラムです |
VMware 内で実行されているかどうかをチェックして標準出力にメッセージを 表示します。同時にリターンステータス (ERRORLEVEL) も返すので DOS バッチ ファイルのなかで使うこともできます。たとえばバッチファイルの中とかで メッセージを表示したくない場合は NUL デバイスにでもリダイレクトしてください。
VMware 内で実行されていない場合のリターンステータスは 0 です。
VMware 内の場合、リターンステータスは VMware から返ってきた
"バージョン番号"です。この"バージョン番号"
の意味は謎のままです。
Options:
なし。
Examples:
VM 以外で実行した場合
C:\>vmchk
Not running inside VMware.
VM 内で実行した場合
C:\>vmchk
Running inside VMware (version 6).
バッチファイル例
@echo off
vmchk > NUL
if errorlevel 1 goto inside
echo Not in VM!
...
:inside
echo Inside VM!
...
デバイスの接続・切断。同時にデバイス状況の一覧を標準出力に表示します。
Options:
vmdev [<action>][<device>]
| <action> | |
| + | 指定デバイスを接続します。action のデフォルト。 対象デバイスが既に接続されている場合、一旦切断して再接続します。 (この機能はかなり本気で便利です。) |
| - | 指定デバイスを切断します。 |
| <device> | |
| 0..9 | 接続・切断する対象デバイス番号。 |
| * | 全デバイス。device のデフォルト。 |
<action> <device> 両方が省略された場合、リスト表示のみ 行います。接続済みのデバイスには '+' マークがつきます。
Examples:
デバイスリストを表示する:
vmdev全デバイスを接続(または再接続)する:
vmdev * or vmdev +* or vmdev +全デバイスを切断する:
vmdev -* or vmdev -デバイス 2 を接続(または再接続)する:
vmdev 2 or vmdev +2デバイス 1 を切断する:
vmdev -1
以下の preference 設定の有効・無効を切り替えます。同時に現在の設定一覧 を標準出力に表示します。
Options:
vmpref [[<action>]<feature>]
| <action> | |
| + | 有効にする。 |
| - | 無効にする。 |
| <action> が省略された場合のデフォルト動作は'トグル'です。 | |
| <feature> | |
| G | Grab when cursor enters window. |
| U | Ungrab when cursor leaves window. |
| S | Scroll when cursor approaches window edge. |
| C | Copy and paste between host and guest. |
| T | Time syncronization between host and guest. |
<feature> オプションの大文字・小文字は区別しません。<feature> オプション省略時は設定一覧表示のみ行います。
Examples:
設定一覧を表示する:
vmpref or vmpref + or vmpref -コピー & ペースト機能をトグルする:
vmpref c時刻同期を有効にする:
vmdev +t'ungrab' を無効にする:
vmdev -u
実行すると、ゲストのシステム時刻をホストに同期し、更新された 現在時刻を標準出力に表示します。まだ常駐機能はないので、ホストと ゲストの同期を長時間保つには、定期的に実行しなければなりません。
註:Windows 用 vmw.exe と DOS 用 vmtsr.com には定期実行機能があります。
Options:
なし
標準入力から読み込んだテキストデータをホストのクリップボードにコピーします。
DOS16、WIN32 版とも標準入力からテキストデータを読み込みますが、
DOS16 版はキー入力を受け付けません(実際には受け付けるのですが、
キー入力を待たないので何も入力しないうちに終了してしまいます)。
このプログラムはパイプ、リダイレクトなどと併用することを前提としています。
WIN32 版は最大 65,355 バイトをコピーすることが出来ます。これはおそらく VMware 自体の制限です。DOS16 版では若干少なく、最大約 65,000 バイトです。
正規の VMware-Tools と同様、転送できるのはテキストデータのみです。 これは、VMware が無条件に LF-CR/LF 変換を行ってしまうためです。
このプログラムが動作するためには、
VMware の コピー & ペースト機能が有効になっていなければなりません。
無効時には VMware 自体がデータのやり取りをしてくれません。
ここで一つ注意点があります。このプログラムを(DOS16 版、WIN32 版どちらでも)
正規の VMware-Tools が実行されている Windows ゲスト内で使用する場合、
データをホストにコピーした後でコピー&ペースト機能を無効に
しなければなりません。
そうしないと、ゲストがフォーカスを失った時点で、正規の VMware-Tools が
ゲストのクリップボードの内容をホストに送ってしまい、先に送ったデータが
上書きされてしまうので、このプログラムで送ったデータをホストで取得する
ことが出来なくなってしまいます。
以下のような単純なバッチファイルでこれを自動化することも出来ます:
@echo off
REM copy & paste を有効にする
vmpref +c
REM 標準入力からのデータをコピーする
vmcopy
REM ここで copy & paste を無効にする
vmpref -c
Options:
なし
Examples:
ファイルからテキストをコピーする:
vmcopy < somefile.txtコマンドの実行結果をコピーする:
dir | vmcopy
画面上のテキストデータをホストのクリップボードにコピーします。
WIN32 版はありません(意味がないので)。正規の VMware-Tools が使用できます。
註:DOS 用 vmtsr.com には、同じことをホットキーで実行する機能があります (ほとんどいつでもスナップショットが取れます)。
vmcopy と同様、VMware のコピー & ペースト機能を 有効にしておいてください。Windows ゲストで使用する場合の 注意点も同様です。
Options:
なし
Examples:
vmpaste と併用すると、ホストのクリップボードを
借用して DOS ゲスト内で画面の「スクリーンショット」をとることが出来ます。
vmscr
vmpaste > screen.txt
ホストのクリップボードからテキストデータを読み込み、標準出力に
書き出します。
vmcopy と同様、パイプ、リダイレクトと併用されることを
想定しています。
VMware は最大 65,355 バイトを転送しますが、DOS16 版、WIN32 版とも この最大サイズまで扱うことができます。ホストのクリップボードにそれ以上 のデータが入っている場合、VMware 自体がゲストにデータを転送してくれません。
VMware の コピー & ペースト機能は有効になっている必要があります。 vmcopy で説明したその他の注意事項は当てはまりません。
他の VMware Command Line Tools プログラムと違い、このプログラムはエラー メッセージを標準エラー(WIN32) または画面に直接(DOS16) 出力します。 これは、標準出力は大抵の場合リダイレクトされると思われるからです。
Options:
なし
Examples:
ホストのクリップボードの内容をファイルに保存する:
vmpaste > somefile.txtホストのクリップボードの内容を他のプログラムに送る:
vmpaste | sort > sorted.txt
このプログラムを実行すると、
A bootable CD-ROM disc, floppy diskette,
or hard disk was not detected.
ダイアログがホスト上に表示されます。誰かの役に立つかどうか分かりませんが、
とりあえず入れておきました。Options:
なし
VMware Command Line Tools ソースのコンパイル/アセンブルに関する 覚え書きです。基本的にはプログラムを書いたことのある人にとっては 何も特別なことはありません。
C ソースについて (WIN32)
アセンブリソースについて (DOS16)