2017-11-09 3 views
0

バッチファイルに2つのパラメータを渡す必要があり、ファイル名が使用可能かどうかを確認します。私は2つのパラメータの1つがfalseの場合、必要なメッセージを表示するためにバッチファイルが必要なので、以下のコードを実行するのに問題があります。バッチファイルで2つのパラメータを渡していない場合

お願いします。

@echo off 

echo. 
if "%1" == "" if "%2" == "" (
    echo Syntaxe : parameters required 
    exit /B 1 
) 

if EXIST %1 (
    echo %1 exist 
) ELSE (
    echo file: %1 does not exist 
) 

if EXIST %2 (
    echo %2 exist 
) ELSE (
    echo file: %2 does not exist 
) 
+0

[DOSとcmdは非常に異なるものです](https://superuser.com/q/451432/241386)。 DOSの 'exit/b'のようなものはありません。 –

+2

あなたはこのコードが何をするのか、あなたのシステム上で実際に何をしているのか、あなたが提供しているパラメータを教えてください。 – Magoo

+0

[MCVE]と[ASK]を確認してください。あなたのスクリプトがあなたの期待からどのように逸脱しているか教えてくれていません。何か問題がありますか? – jwdonahue

答えて

0

両方%1%2が空

if "%1" == "" if "%2" == "" 

チェックします。あなたがしたいのは、1つ1つチェックして、%1または%2のいずれかが空の場合にスクリプトを終了することです。二度同じコードを書く避けるため

if "%1" == "" (
    echo This script requires two parameters. 
    goto :eof 
) 
if "%2" == "" (
    echo This script requires two parameters. 
    goto :eof 
) 

、推奨されるソリューションは、日常的なエラーとしてそれを単離することである。

if "%1" == "" goto :emptyarg 
if "%2" == "" goto :emptyarg 
... 
goto :eof 
:emptyarg 
echo This script requires two parameters 
goto :eof 
+0

あなたのソリューションALexPありがとう。私は以下のコードで試してみましたが、動作します。 @echo off echo。 "%2" == ""( echoこのスクリプトには2つのパラメータが必要です exit/B 1 ) "%1" == "" "%2" == "1%" == "" でない場合、 "%2" == ""( このスクリプトは、2つのパラメータ 出口/ Bを必要とするエコー " IF( このスクリプトは 出口/ B 1 2つのパラメータが必要)" "%1" == "" そうでない場合は "%2" == ""( )は2つのパラメータが存在 終了/ B 1 あるエコー – user3466990

+0

あなたが安全に省略することができていない場合は1 ) 'もし「%1 "行。 '%2'が空の場合、'%1'を確認する必要はありません。また、適切な処理のために '%"〜 "2"を使用する方が安全です( '%2'が既に引用符を持っている場合は二重引用符を避けてください) – Stephan

関連する問題