現在、インストールファイルを実行する.batバッチファイルを書いています。インストールファイルを実行する前に、アプリケーションの再インストールを避けるために、そのディレクトリが存在するかどうかをチェックします。
これは、If Not Exist filename
文を使って行います。インストールされたファイルが存在しない場合は、インストールファイルを実行します。
なぜか、すでにインストールされているアプリケーションでテストすると、やはりその上にアプリケーションを再インストールしようとしてしまいます。
以下は、私のコードの一部です。
cd "C:\Documents and Settings\John\Start Menu\Programs\"
pause
If NOT exist "Software Folder"\ (
start \\filer\repo\lab\"software"\"myapp"\setup.exe
pause
)
SoftwareFolder "は、`"C:Documents and Settings\John\Start Menu\Programs\".のサブディレクトリで、"Programs "フォルダの中に存在するかどうかを確認しています。
私のstart
コマンドには何の問題もありません。冒頭の CD
コマンドか、そのパラメータのどれかがおかしいような気がします。
皆さん、どうもありがとうございました。
私はこの問題について、始めたばかりの人や経験の浅いユーザーが知っておくと役に立つかもしれないいくつかの問題に気づきました。まず...
CD /D "C:\Documents and Settings\%username%\Start Menu\Programs\"
第二に、これをユーザからユーザへ渡す場合、自分の名前の代わりに %username% というコードを追加しなければなりません。これにより、自分のコンピュータと同じ場所に setup.exe ファイルがある限り、どのコンピュータでもコードを使用できるようになります。 また...
start \\filer\repo\lab\"software"\"myapp"\setup.exe
ここのスタートコードはそのように設定することができますが、正しい構文は
start "\\filter\repo\lab\software\myapp\" setup.exe
setup.exeの実行場所は、次のようになります。\etc.etc.
Escobar Ceaser氏の回答のように、パス全体を引用符で囲むことをお勧めします。これは、パス全体を""で囲むのが一般的な方法で、パス内のディレクトリ名を分けるだけではありません。
私も似たような問題があって、うまくいきませんでした。しかし、パスには環境変数が含まれており、環境変数自体が複数のディレクトリ階層をカバーしているため、パスの中で""を使ってディレクトリ名を分けるという選択肢はありませんでした。結論としては、最後の"と()の間のスペースを見逃していました。
正しいバージョンでは、ブラケットの前にスペースを入れて、次のようになります。
If NOT exist "C:\Documents and Settings\John\Start Menu\Programs\Software Folder" (
start "\\filer\repo\lab\software\myapp\setup.exe"
pause
)