Показать полную графическую версию : [решено] Выделить в переменные Имена пользователей
Valek271183
27-11-2018, 00:21
Подскажите возможно ли сделать так, что бы вывести список пользователей из диска C:\Users в переменную, сложность в том, что это надо сделать из WinPE, плюс в том, что в WindowsPE диск с рабочей Windows 7 всегда отображается диском C:\
Сейчас в батнике вручную вписываю имя пользователя простой командой SET /P, но хотелось бы не смотреть каждый раз имена пользователей, и вписывать их вручную, а выбрать из показанного списка, например было бы так:
Выберите пользователя:
Менеджер
Продавец и т.д., то есть перечислен список пользователей из C:\Users, и выбрав вариант с нужным пользователем, его имя записалось в переменную, что бы батник продолжил дальше работать с этим пользователем.
Подскажите, пожалуйста, как это сделать?
Valek271183, начните с того — зачем это Вам нужно. Ибо имя каталога в C:\Users — далеко не всегда <===> Имя пользователя.
Проверьте, работает ли в WinPE команда choice.exe?
Valek271183
27-11-2018, 14:17
C:\Users на всех компьютерах которые успел проверить
choice.exe в PE работает
megaloman
27-11-2018, 17:15
Valek271183, @Echo Off
cls
Set "DUsers=C:\Users"
Set Ext="Public"
Set /A N=0
FOR /D %%d IN ("%DUsers%\*.*") DO Call :Names "%%~nd"
If N==0 Exit /B 1
:Begin
2>nul Set /A NUser=%U%
cls
Echo ===== Список пользователей
FOR /L %%i IN (1,1,%N%) DO Call Echo %%i %%N%%i%%
SET /P i=Выход=Q, Номер пользователя=
If /I "%i%"=="Q" Exit /B
2>nul Set /A NUser=%i%
If %NUser% LSS 1 GoTo :Begin
If %NUser% GTR %N% GoTo :Begin
Call Set "NUser=%%N%NUser%%%
Echo %NUser%
pause
GoTo :Eof
:Names
FOR %%i IN (%Ext%) DO If /I "%%~i"==%1 Exit /B
Set /A N+=1
Set "N%N%=%~1"
Exit /B@Echo Off
cls
Set "DUsers=C:\Users"
Set Ext="Public"
Set /A N=0
Set "Spisok=Q"
Set "Element=Q=Выход"
FOR /D %%d IN ("%DUsers%\*.*") DO Call :Names "%%~nd"
If N==0 Exit /B 1
Echo ===== Выберите пользователя
CHOICE /C %Spisok% /M "%Element%"
If %ErrorLevel% EQU 1 Exit B 0
Set /A NUser=%ErrorLevel%-1
Call Set "NUser=%%N%NUser%%%
Echo "%NUser%"
pause
GoTo :Eof
:Names
FOR %%i IN (%Ext%) DO If /I "%%~i"==%1 Exit /B
If %N% EQU 9 Exit /B 1
Set /A N+=1
Set "Spisok=%Spisok%%N%"
Set "Element=%Element% %N%=%~1"
Set "N%N%=%~1"
Exit /BЕсли кроме папок пользователей имеются другие не скрытые и не системные, они будут рассматриваться как папки пользователей.
Может быть сформирован список нерассматриваемых папок в переменной Ext. Сейчас там одна папка:
Set Ext="Public"
Возможно несколько папок:
Set Ext="Public" "All Users" Default "Default User" "Все пользователи"
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.