【问题标题】:Batch File - Connect network drives with for loop批处理文件 - 使用 for 循环连接网络驱动器
【发布时间】:2016-12-11 11:31:27
【问题描述】:

我想创建一个批处理文件来轻松连接到某些网络驱动器。我正在考虑使用某种嵌套的 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

那么...有什么建议吗?谢谢!

【问题讨论】:

  • 您当然会得到所有带有嵌套循环的组合,因为内层循环会为外层循环的每次单次迭代遍历其所有项目。但是你真的需要像这样定义驱动器和路径吗?你能不能不使用一些数组风格的变量,比如set "drive[1]=F"path "dpath[1]=LOCATION01\name1" 等?另见这篇文章:How to loop through array in batch?
  • 您是否尝试通过批处理将网络驱动器映射到某些驱动器号?
  • 请问您为什么不对三个NET USE 命令进行硬编码?

标签: batch-file for-loop nested-loops network-drive


【解决方案1】:

试试这个:

@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
    )
  )
)

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

【讨论】:

    猜你喜欢
    • 2021-02-23
    • 2023-04-08
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 2014-07-04
    • 2018-04-17
    相关资源
    最近更新 更多