2016-08-05 13 views
0

いくつかのネットワークドライブに簡単に接続するためのバッチファイルを作成したいと思います。私はある種のネストされたforループを使用することを考えていましたが、私はちょっと立ち往生しています。今、私はこのようにそれらをエコーできるようにしたいと思いバッチファイル - forループを使ってネットワークドライブを接続する

set drives=F,G,H 
set paths=LOCATION01\name1,LOCATION02\name1,LOCATION01\name2 

:だから私は、2つの変数を持っている(まあ、代わりにそれをエコーの、私は右のドライブへの正しい道を接続しますが、それはしていませんここに問題がある)

F -> LOCATION01\name1 
G -> LOCATION02\name1 
H -> LOCATION01\name2 

私はこの問題を解決する方法がわかりません。最初は次のようなものを試しましたが、確かにうまくいきませんでした。それはすべてのドライブのすべてのパスを繰り返しただけで、ドライブごとに1つのパスが必要です。

FOR %%A IN (%drives%) DO FOR %%B IN (%paths%) DO ECHO %%A %%B 

だから...どのような提案ですか?ありがとう!

+1

もちろん、ネストされたループのすべての組み合わせを取得します。内側のループは、外側のループのすべての* 1回の繰り返しについてすべてのアイテムを反復処理するからです。しかし、あなたは本当にこのようなドライブとパスを定義する必要がありますか? 'set" drive [1] = F "'と 'path" dpath [1] = LOCATION01 \ name1 "'などの配列スタイルの変数を使用できませんか?この記事も参照してください:[配列を一括してループする方法](http://stackoverflow.com/q/18462169) – aschipfl

+0

ネットワークドライブを特定のドライブ文字にバッチでマップしようとしていますか? – sambul35

+1

3つの 'NET USE'コマンドをハードコーディングしていないのはなぜですか? – Squashman

答えて

0

このお試しください:コードはすべてのドライブとパスをループのあなたのアイデアを拡張しますが、それは現在のドライブへの正しいパスを割り当てることができるように、それぞれのインデックスを追跡するために変数を使用し

@echo off 
setlocal enabledelayedexpansion 
set drives=F,G,H 
set paths=LOCATION01\name1,LOCATION02\name1,LOCATION01\name2 
set drivecounter=0 
for %%d in (%drives%) do (
    set /a "drivecounter+=1" 
    set pathcounter=0 
    for %%p in (%paths%) do (
    set /a "pathcounter+=1" 
    if /i !drivecounter! == !pathcounter! (
     echo %%d assigned to %%p 
    ) 
) 
) 

を処理されています。

関連する問題