- ベストアンサー
バッチファイル FOR文
こんにちは、 リモートクライアント40台に対して、フォルダを作成するバッチファイルを書きたいと考えています。 (リモートコンピュータ名:PC01からPC40) FOR /L %%i IN (1,1,40) DO mkdir "\\pc%%i\c$\test" とすると、 01,02,03・・とは変数が入らず、1,2,3と入っていくためエラーが起きます。 上記の事で、うまいバッチファイルの書き方はありますでしょうか?何かお分かりの方がいましたら教えてください。よろしくお願いします。 ほか、上のバッチファイルではエラー無視しないように思うのですが、エラーを無視しながら進めていくにはどうすればいいのかもあわせて教えていただけると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
単純に2行に分けては?(逃げですが) FOR /L %%i IN (1,1,9) DO mkdir "\\pc0%%i\c$\test" FOR /L %%i IN (10,1,40) DO mkdir "\\pc%%i\c$\test"
その他の回答 (2)
#2さんの回答で、「エラー無視」の意味がわかりました。 そういう意味でエラー無視をするなら、1台1台に対してそれぞれバッチファイルを計40個作って、それをメインのバッチのなかからstartコマンドで呼び出すことになると思います。バッチの中からそのファイルを作るようにすれば手間は省けますが、現実的には接続エラーが出る状態でも、タイムアウトによって次のノードに処理が移っていきますので運用上の問題はないと思います。 単にエラー表示をさせたくなければメッセージをNULに叩き込むこともできると思いますが、それだとまったく実行結果が分からなくなるので、表示させたほうがいいでしょうね。
お礼
返信ありがとうございます。解決することができました。
- notnot
- ベストアンサー率47% (4900/10358)
#1の方の回答が実用的だと思いますが、分けないとすると、 FOR /L %%i IN (1,1,40) DO if %%i lss 10 (mkdir "\\pc0%%i\c$\test") else (mkdir "\\pc%%i\c$\test") >上のバッチファイルではエラー無視しないように思うのですが、 「エラー無視しない」とは具体的にどういう意味でしょうか?文字通りだとエラーが発生するとfor文が中断してそれ以降のPCについて処理されないということでしょうか?そんなはずは無いと思いますが。 もしかして、存在しないor電源の入っていないPCについてタイムアウトするまで時間がかかるということでしょうか?それはしょうがないと思います。
お礼
返信ありがとうございます。解決することができました。
お礼
返信ありがとうございます。非常に参考になりました。