2016-08-05 55 views
0

我想创建批处理文件以轻松连接到某些网络驱动器。我正在考虑使用某种嵌套循环,但我有点卡住了。所以,我有两个变量:批处理文件 - 使用for循环连接网络驱动器

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

现在我想能够呼应他们是这样的:(当然,不是呼应的话,我会连接到正确的驱动正道,但不这里的问题)

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

我不知道如何解决这个问题。起初,我尝试了类似下面的内容,但那肯定没有奏效。它只是绕过每个驱动器的每条路径,而我只希望每个驱动器有一条路径。

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

所以...有什么建议吗?谢谢!

+1

你当然会得到所有与嵌套循环的组合,因为内部循环遍历其所有项目,以便对外部循环的每一次迭代进行迭代。但是你是否真的需要定义这样的驱动器和路径?你不能使用一些数组式的变量,比如'set“drive [1] = F”'和'path“dpath [1] = LOCATION01 \ name1”'等等。另请参阅此帖:[如何批量循环数组?](http://stackoverflow.com/q/18462169) – aschipfl

+0

您是否试图通过批次将网络驱动器映射到特定的驱动器号? – sambul35

+1

我可以问你为什么不编码三个'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 
    ) 
) 
) 

代码扩展了您通过所有驱动器循环的想法,所有的路径,但使用变量来跟踪该指数的每个以便它可以正确的路径分配到当前驱动器正在处理。