2

以下のバッチ スクリプトで、バッチ ファイルにハードコードされたパスの相対パスを指定する必要があるという問題に直面しています。

以下は、soapUI コマンドライン実行ファイルです。soapui-settings.xml はすべての SOAP 設定を含むファイルで、project.xml はテストケースを含むファイルです。ここにハードコードされたパスがあります。私はこのファイルをチェックインするつもりなので、他の人がこのファイルを実行すると、パスがマシンに存在しないため機能しません。Windowsでそれを達成するにはどうすればよいですか? 相対パスを使用して、バッチ ファイルにハードコードされたパスを実行する方法はありますか??

ここに私のサンプルファイルがあります:

cd C:\soapui4.5\soapUI-Pro-4.5.0\bin  
testrunner.bat -tC:\Users\jvihol\soapui-settings.xml C:\Users\jvihol\Documents\April-RTM-soapui-project.xml

どんな助けでも本当に感謝します。ありがとう。:)

4

3 に答える 3

5

これが、変化するパスを解決するために使用するトリックです。要するに、

  1. すべてのパスをバッチ ファイルの場所からの相対パスにします。
  2. バッチ ファイルが独自の作業ディレクトリを変更するようにします。

呼び出すツールがパス内、または環境変数によって定義された場所にある場合に役立ちます。

このようなもの :

@echo off

pushd %~dp0

REM Here you are executing in the same directory as the batch file
REM You can make your path relative to here

popd

プロジェクトでは%~dp0、絶対パスのプレースホルダーとして同じものを使用できます。

pushd C:\soapui4.5\soapUI-Pro-4.5.0\bin 
testrunner.bat -EDefault -I -t%~dp0soapui-settings.xml %~dp0April-RTM-soapui-project.xml
popd
于 2012-05-23T03:09:12.797 に答える
1

相対パスから絶対パスを取得するには、誰かが計算を行う必要があります。私が知っている 3 つのオプションは、i) パスの計算だけを行うアドオン プログラム、ii) 「現在のディレクトリ」を使用する、iii) 2 つのパスを一緒に壊す、の 3 つです。方法 ii) と iii) の大まかな図を次に示します。

REM example "givens"
set DRIVE=C:
set ROOTPATH=\fee\fie\fo
set RELPATH=funky\stuff
set FILENAME=blarf.txt

REM method ii) using the "current directory" functionality
%DRIVE%
cd %ROOTPATH%
cd %RELPATH%
more %FILENAME%

REM method iii) using explicit concatenation
set FULLPATH=%DRIVE%%ROOTPATH%\%RELPATH%
set PATHFILENAME=%FULLPATH%\%FILENAME%
more %PATHFILENAME%

REM DOS/BAT handling of drive letter is odd (is it part of the path, or not?)
REM It may be necessary to use "cd /D ..."

REM Path calculations are easier 
REM so long as DOS/BAT understands that "\\" is the same as "\"
于 2012-05-23T00:53:29.230 に答える
0

多分あなたはこれが欲しい:

cd C:\soapui4.5\soapUI-Pro-4.5.0\bin  
testrunner.bat -t%USERPROFILE%\soapui-settings.xml %USERPROFILE%\Documents\April-RTM-soapui-project.xml

USERPROFILE現在のユーザーのホーム ディレクトリへのパスを含むシステム環境変数です。セッションでは、次のように評価されます

C:\Users\jvihol

そして他の誰かの中で、

C:\Users\someone else's user name
于 2012-05-23T12:39:19.647 に答える