2

既に作成されているデータ処理モジュールのラッパーとして使用するバッチ ファイルに取り組んでいます。必要に応じて並列に実行したり、処理能力が許す限りシリアルに実行したりできるようにすることを目標としています。基礎となるモジュールには、1 つの入力 (二重引用符で囲まれたパス) と、必要に応じて二重引用符で囲まれた別のパスおよび/または一連のフラグが必要です。これらの入力をテストする方法を見つけようとしています。私は現在持っています

:TEST_PARAMS
REM Make sure parameters are correct; if not, display a usage message
IF NOT "%1"=="" (SET SUBBASENAME=%1
) ELSE (
    GOTO :USAGE
)
IF NOT "%2"=="" (SET ATLASBASENAME=%2
) ELSE (
    SET ATLASBASENAME=%DEFAULTATLAS%
)
IF NOT "%3"=="" (SET FLAGS=%3
) ELSE (
    SET FLAGS=""
)
GOTO :START_SVREG

物事が正しい順序で入力されている場合、これはすべてを正しく解析するようです。ただし、フラグ (「-」が前に付く) が最初または 2 番目の入力としてポップアップしているかどうかを確認し、ポップアップしている場合は、使用法メッセージを表示したり、必要に応じて変数を正しく設定したりしたいと考えていました。これを行う最も簡単な方法は、これらの文字列の最初の文字が「-」であるかどうかを確認することだと思いましたが、これを行う方法が見つかりません。部分文字列を空の文字列に置き換え、結果の文字列が元の文字列と同じかどうかを確認することで、文字列に特定の部分文字列が含まれているかどうかを確認するコードのスニペットを見つけましたが、他の場所にハイフンが合法的に含まれている可能性があるため、これは機能しません。彼らのパスで。文字列の最初の文字がバッチ ファイル内の特定の文字と一致するかどうかを確認する方法はありますか。

4

2 に答える 2

1

引数を環境変数に転送し、SET サブストリング操作を使用して最初の文字を調べることができます。(HELP SETコマンド ラインから入力して、部分文字列操作に関する情報を取得します)

@echo off
set "var=%~1"
if defined var if "%var:~0,1%" equ "-" echo arg 1 is a flag
于 2012-05-22T01:38:52.867 に答える
1

バッチ ファイルの作成者として、処理できるコマンドと処理できないコマンドがわかるため、バッチ ファイルの引数で "-" をチェックする必要はありません。「-b」を使用すると処理方法がわかります。ユーザーが「-t」を渡した場合は、処理方法がわかります。バッチ ファイルでは、引数の順序に関係なく、すべての引数を処理する必要があります。バッチ ファイルには、それを処理するセクションがあります。「-」または「/」を使用して任意の数の引数を処理できるバッチ ファイルの例を次に示します。

@echo off

if [%1]==[] goto usage
:CHECKFORSWITCHES
@echo Execute the Command
IF '%1'=='/param1' GOTO PARAM1
IF '%1'=='-param2' GOTO PARAM2
IF '%1'=='/param3' GOTO PARAM3
IF '%1'=='-param4' GOTO PARAM4
IF '%1'=='/param5' GOTO PARAM5
goto :eof

:PARAM1
@echo This is Param1
set var=%1
set var2=%var:~0,1%
echo %var2%
SHIFT
goto :CHECKFORSWITCHES
:PARAM2
@echo This is Param2
SHIFT
goto :CHECKFORSWITCHES
:PARAM3
@echo This is Param3
SHIFT
goto :CHECKFORSWITCHES
:PARAM4
@echo This is Param4
set var=%1
set var2=%var:~0,1%
echo %var2%
SHIFT
goto :CHECKFORSWITCHES
:PARAM5
@echo This is Param5
SHIFT
goto :CHECKFORSWITCHES
:usage
@echo Usage: %0 ^<Write your command here^>
exit /B 1

上記のスクリプトは、パラメーターの最初の文字もチェックするため、そのコードを個別に使用する必要がある場合は、それを使用できますが、それは良い方法ではないと思います.

上記で、「-」または「/」に基づくロジックを記述する必要がある場合は、IF %var2%=='/" GOTO XXX を使用するだけで、探していることを何でも実行できます。

于 2012-05-21T23:04:41.593 に答える