Как я могу заставить этот пакетный процесс правильно использовать пользовательский ввод? - PullRequest
0 голосов
/ 07 ноября 2019

Мы используем несколько удаленных дисков на моем рабочем месте, и я разрабатываю универсальный файл .bat для сопоставления накопителей, чтобы помочь людям, не имеющим технических знаний, подключить накопители.

В настоящее время у меня есть такойкод:


@net use G: \\u-dom1.u-ssi.net\DFSRoot05784 /persistent:yes
@pause

Это успешно сопоставляет диск DFSRoot05784 с буквой G:

Я пытаюсь разрешить пользователям указывать букву диска и адрес сопоставления, которыйЗатем код использует для выполнения того же действия. В настоящее время я пришел к этому:

@ Echo Create new drive mapping

set /p driveLetter= "Choose a drive letter"

set /p driveAddress= "Enter a drive address"

@net use driveLetter: driveAddress /persistent:yes

@pause

Он успешно запрашивает букву диска и адрес сопоставления, но впоследствии я получаю ошибку 67. Есть ли что-то, что я не понимаю о том, как командная строка принимает и использует переменные? Что мне нужно изменить, чтобы заставить его работать так, как мне нужно?

1 Ответ

0 голосов
/ 07 ноября 2019

Вы должны заключить переменные в %, чтобы система идентифицировала их как переменные, а не как обычный текст:

Я также рекомендую сначала проверить, что буква диска еще не используется.

@echo off
:begin
echo( & echo Create new drive mapping & echo(
set /p "driveLetter=Choose a drive letter: "
if not exist %driveletter%: (
    set /p "driveAddress=Enter a drive address: "
   ) else (
   echo drive "%driveletter%:" already in use please try again.
   goto begin
 )
   net use %driveLetter%: %driveAddress% /persistent:yes

pause

Кроме того, это предполагает, что пользователь фактически вводит полный адрес. то есть \\server\path, который затем будет сохранен в переменной %driveAddress%

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