2011-02-03 8 views
0

これはServerFaultの問題かもしれませんが、OSが相対パスを解決するために使用する方法を理解することにもっと興味がありました。 Windows 2003の2つのVMwareインスタンスがあります。フォルダパス内で別のバッチファイルを実行するバッチファイルを実行しようとしています。このスクリプトは、1 VM上の細かい動作しますが、他のVM上ではエラーで実行に失敗します。相対パスに関する問題(* .bat + VMWARE + Windows 2003)

>  The System cannot find the file specified 

私が実行しようとしていたスクリプトがscript.batです:

start /d FOLDERNAME /b /WAIT AnotherScript.bat %~n0%~x0 

私は両方の私のファイルを入れています両方のマシン上のC:\ドライブの下の同じフォルダ構造内にあります。ファイルAnotherScript.batは、両方のVMのFOLDERNAME内にあります。

私は両方のVMの管理者として表示されるため、アクセス許可の問題(?)ではありません。

私はなぜ、あるマシンで相対パスを解決できないのか、別のマシンで解決することができないのだろうと思っていました。

おかげ

答えて

1
  1. 最初のチェックの両方がlauchingされているフォルダが同じである場合。 2番目のスクリプトを呼び出して起動するディレクトリを確認する前に、ECHO %CD%を追加してみてください。

  2. また、第1のVMの変数%PATH%に第2のbatファイルが存在するパスが設定されているかどうかを確認します。

  3. 両方のVMでデフォルトでコマンドプロンプトが開始されますか。

+0

ありがとう。両方のスクリプトが同じディレクトリから起動しており、%PATH%変数は同じで、cmdは両方のマシンのC:\ WINDOWS \ system32 \ cmd.exeから開始します。これのどれも視覚的に異なるとは思われません。私が調べなければならない何か他にありますか? –

+0

@sc_rayこれは、起動時にcmdが表示する現在の作業ディレクトリを意味していました。また、ECHO%CD%をバッチスクリプトに追加して、バッチファイル2を実行する前に両方のVMが表示している現在のディレクトリを確認しましたか? –