Написание пакетной программы из локальных системных переменных с помощью команды Set - PullRequest
0 голосов
/ 21 мая 2018

Мне необходимо написать программу, которая отображает имя компьютера, имя пользователя и путь к файлам пользователя.Все они должны быть взяты из локальных системных переменных.Намекнули, что я должен использовать команду set, однако я не уверен, как использовать команду set в этой ситуации ... Я предполагал, что могу просто использовать echo %COMPUTERNAME% и т. Д. Как можноЯ реализую команду set?

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

, чтобы ответить на вопрос буквально («отобразить имя компьютера ... с помощью команды set»):

set computername
set username
set userprofile

, например:

COMPUTERNAME=Elon-PC
USERNAME=Muscrat
USERPROFILE=C:\Users\Muskrat

(Compo ужеимеет этот метод в своем ответе, но я предполагаю, что использование команды for выходит за границы текущего состояния вашего курса)

(Примечание: для практического использования, в большинстве случаев ответ Compo (с использованием переменных)лучше, потому что на практике вы, вероятно, будете делать что-то со значениями, а не "просто" показывать их, но это буквально отвечает на ваш вопрос)

0 голосов
/ 21 мая 2018

Я предполагаю, что подсказка о команде Set была такой, чтобы вы могли использовать ее вывод, чтобы помочь вам определить локальные системные переменные для использования в вашем пакетном файле, а не то, что вам нужно использовать Setвыводить их.

Когда вы введете Set в командной строке, вы получите вывод, показывающий каждую из определенных системных переменных.

Кроме того, если вы введете Set ComputerName вподсказка, вы должны получить вывод, показывающий вам все переменные, которые начинаются со строки ComputerName.

Таким образом, основываясь на выводе команды Set, вы можете Echo, ваши три переменные из пакетного файла, такие какthis:

@Echo Off
Echo %ComputerName%
Echo %UserName%
Echo %UserProfile%

Вы также можете включить переменные с их значениями:

@Echo Off
Echo %%ComputerName%%=%ComputerName%
Echo %%UserName%%=%UserName%
Echo %%UserProfile%%=%UserProfile%

Вы также можете рассмотреть возможность запуска простого цикла For в вашем пакетном файле для отображения того же содержимогоиспользуя команду Set напрямую:

@Echo Off
For %%A In (ComputerName,UserName,UserProfile) Do Set %%A
Pause

Или вы можете вернуть только их значения, используя Set и Echo из вложенных циклов For:

@Echo Off
For %%A In (ComputerName,UserName,UserProfile) Do (
    For /F "Tokens=1* Delims==" %%B In ('Set %%A') Do Echo %%C)
Pause
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...