Когда пользователь в Windows 7 входит в систему и профиль поврежден, он получает пустой профиль. Я могу исправить достаточно легко, перейдя в реестр и удалив временный профиль, установив значения refcount и state. Я застрял в своей партии, так как извлечение из реестра добавляет 2 пробела к имени ключа реестра, как только я вызову его в пакете. Если я повторяю% SID%, он возвращает правильное значение без видимого пространства. Реестра имеет% SID% и% SID% .bakПереименование/удаление ключей в реестре с помощью пакетного cmd
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /F "skip=1 delims=" %%j in ('wmic useraccount where name^="%username%" get SID') do (
set SID=%%j
goto :DONE
)
:DONE
echo SID=%SID%
reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%SID%.bak"
pause
результат партии:
SID=S-1-5-21-1559011707-81249799-2450556423-1000
Permanently delete the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Window
s NT\CurrentVersion\ProfileList\S-1-5-21-1559011707-81249799-2450556423-1000 .b
ak (Yes/No)? y
ERROR: The system was unable to find the specified registry key or value.
Press any key to continue . . .
Как вы можете видеть выход положить 2 пробела после SID & расширение файла
Любые идеи?
'echo SID =% SID% foo'. посмотрите, существуют ли пробелы. если да, то они присутствуют в wmic-выходе. –