2016-07-29 3 views
0

ファイルがProgram FilesまたはProgram Files(x86)ディレクトリ内のサブフォルダに存在するかどうかを確認するためのチェックを実行しようとしています。 、私のスクリプトはここ\AEM was unexpected at this time." AEMはこの時点では予期しなかったバッチファイル"

で勃発する時間が私のコードです:

:UPGRADECHK 
IF EXIST "C:\Program Files\AEM Keep Alive Service\AEMKeepAlive.exe" (
SET INSTALLDIR=C:\Program Files\AEM Keep Alive Service 
GOTO UPGRADE 
) 

IF EXIST "C:\Program Files (x86)\AEM Keep Alive Service\AEMKeepAlive.exe" (
SET INSTALLDIR=C:\Program Files (x86)\AEM Keep Alive Service 
GOTO UPGRADE 
) 

私は%PROGRAMFILES%%PROGRAMFILES(x86)%システム変数とフルパスが、すべての時間を使用してみました、私は同じエラーを取得します。 @Echo Onでコマンドを実行すると、それは問題を抱えているx86パスのようです。誰もがなぜ失敗しているのかを提案できますか?

+0

あなたの設定コマンドに引用符が必要です – jeb

+0

本当に?私のスクリプトの他の側面には含まれていませんが、INSTALLDIR変数を使用できないときは、引用符を含めます。 ''%INSTALLDIR% "' – Rawns

+0

無視して、うまくいったようです。奇妙な... – Rawns

答えて

2

ファイル名にスペースが含まれているため、インストールディレクトリのパスの前後に引用符を付ける必要があります。あなたが存在チェックでしたのと同じです。同様に:

:UPGRADECHK 
IF EXIST "C:\Program Files\AEM Keep Alive Service\AEMKeepAlive.exe" (
    SET INSTALLDIR="C:\Program Files\AEM Keep Alive Service" 
    GOTO UPGRADE 
) 

IF EXIST "C:\Program Files (x86)\AEM Keep Alive Service\AEMKeepAlive.exe" (
    SET INSTALLDIR="C:\Program Files (x86)\AEM Keep Alive Service" 
    GOTO UPGRADE 
) 
+0

ありがとう、それは私がまだINSTALLDIR変数の値をパスに設定していたので、なぜうまくいかなかったのかまだ分かりません。変数は空白を持つことができますので、私はちょっと投げました。いずれにしても、今はとても感謝しています。 :) – Rawns

+1

スペースに問題はありませんが、閉じ括弧に問題があります。ブロックを閉じます。 – jeb

+0

コマンドラインで、 'cd C:\ Program Files'と入力してみてください。パスにスペースがあるのでうまくいかないので、cdは2つのパラメータ、 "C:\ Program"と "Files"を渡していると考えます。実行可能ファイルにそのパスが単一のコマンドラインパラメータとして渡されていることを知らせるためには、引用符が必要です。 – ManoDestra

関連する問題