Мне нужно написать пакетный файл, чтобы сделать некоторые перемещения содержимого каталога.
Как я могу получить в пакетной переменной значение пути к профилю, возвращаемое командой net user xxx / domain?
Мне нужно написать пакетный файл, чтобы сделать некоторые перемещения содержимого каталога.
Как я могу получить в пакетной переменной значение пути к профилю, возвращаемое командой net user xxx / domain?
Ответы:
Вы можете использовать цикл for / f и поместить net user
команду, переданную по конвейеру, в команду findstr, используя tokens
и, delims
соответственно, в пакетном скрипте, чтобы проанализировать вывод и получить значение из User profile
поля, которое установлено для учетной записи в AD, которую вы запускаете для этой команды.
@ECHO ON
for /f "tokens=3 delims= " %%a in ('net user <username> /domain ^| findstr /i "profile"') do set profilepath=%%a
echo %profilepath%
Примечания сценария
Этот сценарий предполагает , что вы будете заменить
<username>
ниже с явным значением нужного имени пользователя при запуске , чтобы получитьProfile path
отnet use xxx /domain
команды.Символ каретки перед символом канала (т. Е.
^|
) В скобкахfor /f
цикла направляет выводnet user
команды вfindstr
команду, поэтому он должен экранировать символ канала, поэтому во время выполнения команды в цикле он знает, что перенаправляет вывод одной команды в качестве другой команды ввода, в противном случае он запутается, поэтому просто избегайте его.Знак процента имеет особое значение в пакетных сценариях, поэтому при использовании
for
цикла внутри пакетного сценария необходимо удвоить знак процента, т.%%a
Е. Этого заполнителя, чтобы избежать его, гарантируя, что он интерпретируется как один%
и может соответствующим образом передавать переменную в цикле.
For /?
delims=xxx - specifies a delimiter set. This replaces the
default delimiter set of space and tab.
tokens=x,y,m-n - specifies which tokens from each line are to
be passed to the for body for each iteration.
This will cause additional variable names to
be allocated. The m-n form is a range,
specifying the mth through the nth tokens. If
the last character in the tokens= string is an
asterisk, then an additional variable is
allocated and receives the remaining text on