Entrada de linha de comando do Windows 7

1

Eu tenho uma pasta de drivers no meu servidor de arquivos. Estou escrevendo um script de linha de comando que solicitará que o usuário insira um número de modelo de computador. o script usará essa entrada para copiar a pasta correta.

Este é o meu script

set /p model="Enter Model Number"

mkdir c:\j2Global\%model%

xcopy /s /e /y "\j2hqfil01\software_ALL DRIVERS\Dell\Desktops\%model%" "C:\j2Global\%model%\"

pause

o que estou querendo saber é se é possível preceder o texto à entrada.

as pastas de drivers são denominadas Optiplex 9010 ou Latitude E5440, por exemplo, atualmente, o usuário precisa digitar Optiplex ou Latitude.

Existe uma maneira de alterar o caminho da pasta para que, se o usuário entrar no 9010, ele capture a pasta Optiplex 9010?

Acho que estou procurando alterar o caminho da pasta "\ j2hqfil01 \ software \ 01_ALL DRIVERS \ Dell \ Desktops \% model%" para algo como "\ j2hqfil01 \ software \ 01_ALL DRIVERS \ Dell \ Desktops *% model % "

    
por user214577 08.08.2014 / 19:35

3 respostas

2

Dado que você só tem duas escolhas possíveis, a maneira mais fácil é simplesmente verificar se existe uma pasta e tentar isso para ambas as situações. se isso acontecer, copia os arquivos. Este é o script:

set /p model="Enter model number"
set "model1=OptiPlex %model%"
set "model2=Latitude %model%"

if exists "\j2hqfil01\software_ALL DRIVERS\Dell\Desktops\%model1%" (
     :: enter commands for OptiPlex below this line

)

if exists "\j2hqfil01\software_ALL DRIVERS\Dell\Desktops\%model2%" (
     :: enter commands for Latitude below this line

)
    
por 08.08.2014 / 19:57
1

What I'm wondering is if its possible to prepend text to input.

Veja um exemplo de texto anterior em uma variável:

set /p model="Enter Model Number"
set model=OptiPlex %model%

Entradas do usuário 9010 , ele adiciona "Optiplex" a ele e atribui o novo valor (de volta) ao "modelo", portanto, no final, "modelo" agora tem um valor de OptiPlex 9010 .

Como você usa isso para escolher qual pasta você quer é uma história diferente, e deve ser a própria pergunta separada.

    
por 08.08.2014 / 19:46
0

Você pode querer usar o argumento / I se você usar if (s) para torná-lo sensível a maiúsculas e minúsculas.

Eu usaria o regex FINDSTR se eu fosse verificar se uma sub-string é parte de uma string. Com expressões regulares, você pode criar um conjunto de regras.

Criar matriz com modelo + número

Se um valor ou alguns valores fizerem parte do array, ele passará.

Example Code :

:start

cls

set /p model = "Enter your model"

set name1=Optiplex

set name2=Latitude

set number1=9010

set number2=E5440

ECHO %name1% %number1%

ECHO %name2% %number2%

set /p model1=%name1% %number1%

set /p model2=%name2% %number2%

:label

rem Add code to manage multiple devices more easily like a FOR LOOP to load the 20

rem variables one by one in dummy variables.

:loop

IF %model%==%model1%|%name1%|%number1% (

ECHO You choose %model1%!

goto :path

)

IF %model%==%model2%|%name2%|%number2% (

ECHO You choose %model2%!

goto :path

) ELSE (

ECHO Wrong Command !

goto :start )

:path

rem Input your XCOPY script here !

    
por 08.08.2014 / 21:39