Arrays 如何在批处理文件中使用数组变量分配驱动器号?

Arrays 如何在批处理文件中使用数组变量分配驱动器号?,arrays,batch-file,variables,login-script,net-use,Arrays,Batch File,Variables,Login Script,Net Use,我正在尝试创建一个登录脚本,它使用一个数组循环遍历一组字母。我已经添加了一个计数器来移动数组。当使用netuse命令时,我得到一个错误,说找不到网络名。最终目标是根据需要将驱动器号列为A、B、H、I等。我肯定我的语法错了,但我找不到答案 如果手动用驱动器号替换变量,则不会出现错误。计算机正在运行Windows Server 2016 @echo off set letter[1]="A" set letter[2]="B" set letter[3]="H" set letter[4]="I"

我正在尝试创建一个登录脚本,它使用一个数组循环遍历一组字母。我已经添加了一个计数器来移动数组。当使用netuse命令时,我得到一个错误,说找不到网络名。最终目标是根据需要将驱动器号列为A、B、H、I等。我肯定我的语法错了,但我找不到答案

如果手动用驱动器号替换变量,则不会出现错误。计算机正在运行Windows Server 2016

@echo off
set letter[1]="A"
set letter[2]="B"
set letter[3]="H"
set letter[4]="I"
set letter[5]="J"
set letter[6]="K"
set letter[7]="L"
set letter[8]="M"
set letter[9]="N"
set letter[10]="O"
set letter[11]="P"
set letter[12]="Q"
set letter[13]="R"
set letter[14]="S"
set letter[15]="T"

set /A counter=1


ifmember "domain users"
if %errorlevel% == 1 (
net use %%letter[%counter%]%%: \\server\shares
set /A counter+=1
echo "Pass"
)
我希望输出将文件夹映射到一个新驱动器,但是出现了get“系统错误67” 找不到网络名称。“

如果需要

使用自扩展代码可以更有效地设置阵列

:: Q:\Test\2019\06\03\SO_56433581.cmd

@Echo off&SetLocal EnableDelayedExpansion
Set i=0&Set "letter= A B H I J K L M N O P Q R S T"
Set "letter=%letter: ="&Set /a i+=1&Set "letter[!i!]=%"
:: set letter
set /A counter=1
ifmember "domain users"
if %errorlevel% == 1 (
    net use !letter[%counter%]!: \\server\sharesset /A counter+=1
    echo "Pass"
)
为了完整起见,代码源于MonthName扩展

Rem Set MonthName[01..12] to short English month names
Set i=100&Set "MonthName= Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
Set "MonthName=%MonthName: ="&Set /a i+=1&Set "MonthName[!i:~-2!]=%"
Set MonthName
正如你所需要的

使用自扩展代码可以更有效地设置阵列

:: Q:\Test\2019\06\03\SO_56433581.cmd

@Echo off&SetLocal EnableDelayedExpansion
Set i=0&Set "letter= A B H I J K L M N O P Q R S T"
Set "letter=%letter: ="&Set /a i+=1&Set "letter[!i!]=%"
:: set letter
set /A counter=1
ifmember "domain users"
if %errorlevel% == 1 (
    net use !letter[%counter%]!: \\server\sharesset /A counter+=1
    echo "Pass"
)
为了完整起见,代码源于MonthName扩展

Rem Set MonthName[01..12] to short English month names
Set i=100&Set "MonthName= Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
Set "MonthName=%MonthName: ="&Set /a i+=1&Set "MonthName[!i:~-2!]=%"
Set MonthName

使用
呼叫网络使用%%letter[%counter%]%%:\\server\shares
或(最好)使用
网络使用!信函[%counter%]!:\\服务器\与
ifmember
共享
?@aschipfl:使用
呼叫网络使用%%letter[%counter%]%%:\\server\共享
或(最好是)
网络使用!信函[%counter%]!:\\服务器\与
ifmember
共享
?@aschipfl:Nice(+1),但是
字母[!i:~-2!]的用途是什么?我认为
字母[!I!]=%
足够了…@aschipfl我的错,我没有从需要2个位置的MonthName扩展中删除无害的残余。不错(+1),但是
字母[!I:~-2!]
的目的是什么?我认为
字母[!I!]=%
就足够了…@aschipfl我的错,我没有从需要两个位置的MonthName扩展中移除无害的残余。