9

CMD シェルでIF最も簡単かつ/または最も読みやすい方法は何ですか? AND擬似コード:

IF EXIST file1 AND file2:
   then do stuff
ELSE: 
   do something else

この Q は SO のどこかにある必要がありますが、私の検索機能はこの Q では機能しません。ごめん

4

5 に答える 5

15

DOS/Windows バッチ ファイルについて話していると仮定すると、次のようなものが必要だと思います。

SET do_stuff=false
IF EXIST file1 IF EXIST file2 SET do_stuff=true
IF "%do_stuff%"=="true" (
    REM do stuff
) ELSE (
    REM do something else
)

醜さの原因は、DOS バッチ ファイルifステートメントにand and or演算子がないことです。そのため、ネストされたステートメントを記述するか( then句とelseif句でコードが重複する可能性があります)、式の結果を変数にキャプチャする必要があります。次に、その値に対してステートメントを実行します(さらに多くの行)。コードの重複を避けるために、私は 2 番目のアプローチを好みます。おそらく、これはすべてセキュリティ機能です。:)if

こことここでいくつかの良い例を見つけました (SO, even)help ifただし、シェル (またはif /?IIRC)に組み込まれているヘルプ システムを使用することもできます。

于 2013-01-30T20:36:43.957 に答える
6
IF EXIST A (
    IF EXIST B (
        ECHO A and B exist
        )
    )
于 2013-01-31T06:21:22.410 に答える
6

@Randall Cookによるかなり良い提案に代わるものは、次のようになります。

IF EXIST file1 IF EXIST file2 (
  do stuff
  GOTO cont
)
do something else

:cont
get on with other stuff
于 2013-01-30T23:40:07.163 に答える