2011-07-21 7 views
29

現在、インストールファイルを実行するバッチファイルを作成しています。インストールファイルを実行する前に、アプリケーションの再インストールを避けるためにディレクトリが存在するかどうかを確認します。存在しない場合 - CMDコマンド - 動作しない

If Not Exists filenameステートメントを使用してこれを行います。インストールされたファイルが存在しない場合は、インストールファイルを実行します。

何らかの理由で、何らかの理由で、すでにインストールされているアプリケーションでテストすると、まだアプリケーションを再インストールしようとしています。ここで

は、私のコードの抜粋です:

SoftwareFolderが、私はそれが私の Programsフォルダ内に存在するかどうかをチェックしています "C:\Documents and Settings\John\Start Menu\Programs\".のサブディレクトリです
cd "C:\Documents and Settings\John\Start Menu\Programs\" 
pause 
If NOT exist "Software Folder"\ (
start \\filer\repo\lab\"software"\"myapp"\setup.exe 
pause 
) 

startコマンドで何も問題がないことは知っています。最初のCDコマンドまたはそのパラメータに何か問題があると感じました。

ありがとう!

答えて

39

If Not Existコードのフォルダへの完全パスを使用します。そして、あなたももうCDにありません。

If Not Exist "C:\Documents and Settings\John\Start Menu\Programs\SoftWareFolder\" 
+0

私はそれを試みたが、それはあまりにも動作していないだろう。 – Johnrad

+1

私もそれを試して、それは働いていませんでした。しかし、私がしたとき C:\ "Documents and Settings" \ John \ "スタートメニュー" \ Programs \ "SoftWare Folder" \ – Johnrad

+0

それは働いた!あなたに感謝します:) – Johnrad

3

を私は知っているし、始まったばかりの誰か、あるいは多少経験の浅いユーザーのために役に立つかもしれない、このいくつかの問題に気づきました。まず...

CD /D "C:\Documents and Settings\%username%\Start Menu\Programs\" 

二つ一つはCDの後に/ Dはディレクトリが変更されたことを確認することに有用であることを証明するかもしれないということですが、あなたはからこれを渡ししようとしている場合には、第二、本当に必要はありませんユーザー名とユーザー名の間に、%username%というコードを追加する必要があります。これにより、コンピューター上で同じ場所にsetup.exeファイルがある限り、コードはどのコンピューターでも使用できます。もちろんそのことを確認することはより困難です。 も...

start \\filer\repo\lab\"software"\"myapp"\setup.exe 

ここでスタートコードは、そのように設定することができますが、正しい構文は、これが実行されます

start "\\filter\repo\lab\software\myapp\" setup.exe 

です:にあるsetup.exe、:\フィルタを\レポ\ラボなど... \

0

Escobar Ceaserの回答と同様に、私はパス全体を囲む引用符を使用することをお勧めします。パス内のディレクトリ名を分離するだけでなく、パス全体を ""包む一般的な方法です。

私はそれが私にとってはうまくいかないという同様の問題がありました。しかしパスには複数のディレクトリ階層をカバーする環境変数が含まれているため、パス内に ""を使用することはできませんでした。結論は、私が正しいバージョンをクロージングの間にスペースを逃した」と(

ということでした、ブラケットの前のスペースで、

If NOT exist "C:\Documents and Settings\John\Start Menu\Programs\Software Folder" (
start "\\filer\repo\lab\software\myapp\setup.exe" 
pause 
) 
関連する問題