2016-05-02 14 views
0

バッチスクリプトのforループの最後にif文を実行するのに問題があります。コードは以下の通りです...forループのdo文中にバッチファイル内でネストする方法

私はかなりの部分を検索しましたが、実際はこれが無効なのかもしれませんか? if文をそれぞれのdoに対して実行させるにはどうしてですか?私は何かが欠けているに違いないように感じる。私は(){}[]を試してみましたが、正しく動作させるものはありません。

ご意見やご感想はありがとうございます。

+0

'if'文の前後に括弧や一重引用符は必要ありません。空文字列の問題を避けるために、比較式を '' "'に囲んでください...とにかく、最初に条件文が単独で動作するかどうか試してみてください。 – aschipfl

+0

コメントありがとうございます。私はあなたが条件付きでそれを釘付けにしたかもしれないと思います。私は現在、それが期待どおりに機能していないので、その部分をトラブルシューティングしています。トラブルシューティングを続けるつもりで、答えが得られたらフォローアップします。期待どおりに設定されていれば条件がうまくいかない理由は見当たりません。 – Raxler

答えて

1

rd commandにUNCパスが許可されているかどうかを確認してください。次のコードスニペットでは、正しい方法でUNC Network pathsを処理する必要があります。しかし、(わからない):それは... RD操作を実行するために除去ディレクトリの

  • 存在と
  • ユーザーの権限の後

...

for /F "tokens=2 delims=/:" %%D in (%DBhost%.txt) do (
    if /I NOT "%%~D"=="localhost" ( 
    pushd "\\%%D\C$" 
    RD /S /Q "%%D_Health_Check_Logs" 
    popd 
) 
) 
+0

まあ、これまでのところ私は上記の例を正しく動作させることができませんでしたが、正しいと思われるようです。 ifステートメントを実行すると、rdはUNCパスを受け取ります。私はそれをifステートメントに追加すると、それが違うのかどうかわかりません。私は上記の作業を続け、私はそれを働かせることができない場合参照してください。現在、この行の最後にクラッシュします。 – Raxler

0

ビッグを見ていませんみんなありがとう。 JosefZとaschipflの両方が登場したようです。 RDはUNCパスで動作しますが、プッシュとポップは動作しませんが、必要はありませんでした。それは論理条件が正しく動作していることを確認することの問題でした。一度セットをしたら、以下のコードは魅力的に機能しました。

の作業コード...

/F "トークン= 2 delims = /:" の中の%% D(%DBHOST%.TXT)(ない場合/ I NOT "の%% D" ==」

関連する問題