Как назначить букву диска с помощью переменной массива в командном файле? - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь создать скрипт входа в систему, который использует массив для циклического прохождения набора букв.Я связал это с добавлением счетчика для перемещения по массиву.При использовании команды net use я получаю сообщение о том, что имя сети не найдено.Конечная цель состоит в том, чтобы буквы дисков были указаны как 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"
)

Я ожидал, что выходные данные сопоставят папку с новым диском, но вместо этого получат сообщение «Произошла системная ошибка 67. Не найдено сетевое имя».

1 Ответ

2 голосов
/ 03 июня 2019

Так как вам нужно отложенное расширение , в любом случае,

вы можете установить свой массив более эффективно с помощью самораскрывающегося кода.

:: 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...