Если вы просто пытаетесь определить, существует ли конкретная учетная запись пользователя, а не сколько совпадающих имен пользователей существует на одном ПК, тогда я бы предложил эту альтернативу wmic :
@Echo Off
Set "ProfilePath="
For /F "Skip=1Delims=" %%A In ('WMIC UserAccount Where^
"LocalAccount='TRUE' And Name='%~1'" Get SID 2^>Nul') Do For /F %%B In ("%%A"
) Do For /F "Tokens=2Delims==" %%C In ('WMIC Path Win32_UserProfile Where^
"SID='%%B' And Special!='True'" Get LocalPath /Value 2^>Nul'
) Do For /F "Tokens=*" %%D In ("%%C") Do Set "ProfilePath=%%D"
If Defined ProfilePath (Echo User Profile %1 exists at %ProfilePath%) Else (
Echo User Profile %1 does not exist)
Pause
Команда If
вместе с Pause
включены только для того, чтобы показать вам структуру If
| Else
для ваших дальнейших команд, (они, очевидно, могут быть изменены / изменены по мере необходимости) .
Если вам не нужно знать и / или обращаться к пути профиля пользователя, вы можете значительно упростить команду:
@Echo Off
WMIC UserAccount Where "LocalAccount='TRUE' And Name='%~1'" Get SID 2>Nul|Find "S-">Nul && (
Echo User Profile %1 exists) || Echo User Profile %1 does not exist
Pause