ポータブル テスト パッケージの一部であるレポート スクリプトを作成しています。ユーザーはシステムのどこにでもパッケージを解凍できますが、これは問題ありませんが、パスをハードコーディングできないことを意味します。
私のシステムでは、このスクリプトが C:/projects/testpackage/foo/bar/script.tcl にあるとしましょう。/testpackage へのパスである変数 packageLocation を設定する必要があります。この例では、C:/Projects/testpackage になります。しかし、ユーザーがパッケージを取得すると、次のようにどこにでも置くことができます。
C:/Users/whatever/testpackage.
では、現在実行中のスクリプトの場所から 2 つ上のレベルを呼び出すにはどうすればよいでしょうか? バッチでは、私はできる
:: example.bat
cd %~dp0
cd ../..
set packageLocation=%cd%
Tclでは、私は迷っています。実行中のスクリプトの現在の場所を $::argv0 として呼び出すことができることを知っています。cd ../.. を使用してみましたが、役に立ちませんでした。packageLocation を「../..C:/Projects/testpackage/foo/bar/script.tcl」として設定しようとします。
どんな助けでも大歓迎です。ありがとう!