Пакетная печать скриптовых номеров - PullRequest
0 голосов
/ 23 января 2019

У меня есть код ниже, который предназначен для автоматизации установки choco пакетов на repo.

Однако вместо выполнения команды (которая выводится правильно) все, что я получаю, - это последовательность чисел, начинающаяся с числа 1.

Любой совет будет принят с благодарностью!

Код для справки:

@echo off 
set arr[0]=sts
set arr[1]=winscp 
set arr[2]=tortoisegit
set arr[3]=office2013pro  
set arr[4]=notepadplusplusandpm
set arr[5]=git
set arr[6]=GoogleChrome
set arr[7]=jdk
set arr[8]=maven
set "x=0"

:SymLoop  
if defined arr[%x%] (
    call set entry=%%arr[%x%]%%
    set command=choco install %entry% -y
    REM Command isn't running, just prints off numbers
    %command%
    set /a "x+=1"
    GOTO :SymLoop
)

Вывод ниже:

1 Ответ

0 голосов
/ 23 января 2019
@echo off
set arr[0]=sts
set arr[1]=winscp
set arr[2]=tortoisegit
set arr[3]=office2013pro
set arr[4]=notepadplusplusandpm
set arr[5]=git
set arr[6]=GoogleChrome
set arr[7]=jdk
set arr[8]=maven
set "x=0"

:SymLoop
if not defined arr[%x%] goto :EndLoop
call set "entry=%%arr[%x%]%%"
set "command=choco install %entry% -y"
REM Command isn't running, just prints off numbers
%command%
set /a "x+=1"
GOTO :SymLoop
:EndLoop

Изменение 2 строк и вы можете избежать блока скобок кода.

Это помогает избежать необходимости отложенного расширения.Пример необходимости отложенного расширения показан в set /?.

set VAR=before
if "%VAR%" == "before" (
    set VAR=after
    if "%VAR%" == "after" @echo If you see this, it worked
)

Все в скобках читается как 1 блок и оценивается один раз.Таким образом, %VAR% в скобках не изменяется, поскольку оно уже было заменено значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...