環境変数が設定されているかどうかを基本的にチェックしてから設定しようとする、非常に単純なバッチファイルがあります。変数が正しく設定されていません。また、私は一般的にバッチファイルにかなり慣れていないため、作成中のスクリプトについていくつかの一般的な質問がありました。任意の洞察をいただければ幸いです。ここに私が持っている質問があります。
- 15 行目で、ディレクトリの完全な名前がわからない場合はどうすればよいですか? つまり、「ホイッスル」がその一部であることを知っていて、それが DIR に == であるかどうかを確認したい場合はどうなりますか?
- 16 行目と 19 行目で、'whistle-1.0.0' にいる場合、BELFRAMEWORK_HOME 変数をその 1 つ上のディレクトリに設定する必要があることを伝えようとしています。「%DIR%..\」でこれを実行しようとしましたが、効果がないようです。BELFRAMEWORK_HOME を 'whistle-1.0.0' の上の 1 つのディレクトリに設定するにはどうすればよいですか?
- 17 行目と 20 行目では、BELFRAMEWORK_HOME 変数が出力されていません。10 行目と 12 行目と同じ形式で、期待どおりに変数をエコーするため、その理由がわかりません。BELFRAMEWORK_HOME がエコーしないのはなぜですか?
- 最後に、この種のスクリプトについて詳しく学ぶための優れたオンライン リソースはありますか?
ありがとう!
1@echo off
2
3if not defined JAVA_OPTS (
4 set JAVA_OPTS=-Xmx1024m -Dderby.stream.error.field=org.openbel.framework.common.enums.DatabaseType.NULL_OUTPUT_STREAM
5) else (
6 set JAVA_OPTS=%JAVA_OPTS% -Dderby.stream.error.field=org.openbel.framework.common.enums.DatabaseType.NULL_OUTPUT_STREAM
7)
8
9set DIR=%CD%
10echo "DIR/CD : %DIR%"
11set DIR=%~dp0
12echo "DIR/~dp0 : %DIR%"
13
14if not defined BELFRAMEWORK_HOME (
15 if "%DIR%"=="whistle-1.0.0" (
16 set BELFRAMEWORK_HOME=%DIR%\..\
17 echo "DIR == whistle, BELFRAMEWORK_HOME is now: %BELFRAMEWORK_HOME%"
18 ) else (
19 set BELFRAMEWORK_HOME=%DIR%\..\
20 echo "DIR != whistle, BELFRAMEWORK_HOME is now: %BELFRAMEWORK_HOME%"
21 )
22)
23
24set WHISTLE_HOME=%~dp0
25java %JAVA_OPTS% -jar %WHISTLE_HOME%\whistle-1.0.0.jar %*