在批处理文件中多次使用变量

时间:2015-12-16 11:47:34

标签: variables batch-file

我尝试编译批处理文件以获取当前用户的userID,然后使用输出删除某个注册表项。

我发现这是为了获取当前登录用户的SID:

  

wmic useraccount其中name ='%username%'得到sid

这完美地运作并且给了我:

  

SID

     

S-1-5-21-XXXXX-XXXXX-XXXX-XXX

现在我想使用S-1-5-21 ....等删除当前登录用户的某个注册表项,所以S-1-5-21等我怎么能去做?或者是否有更简单的方法,能够确定当前的SID并因此删除密钥?

谢谢你!

2 个答案:

答案 0 :(得分:1)

试试这个:

@echo off
wmic useraccount where name='%username%' get sid > temp.txt &more temp.txt > temp2.txt &del temp.txt
for /F "tokens=*" %%A in (temp2.txt) do set "userID=%%A"
del temp2.txt
echo %userID%
pause

您可以在此代码后使用%userID%变量。

请注意,由于wmic解析输出的方式

,您需要使用更多

答案 1 :(得分:1)

假设您要删除注册表项...

HKEY_USERS\[SID-OF-USER]\test

......这个脚本应该删除它:

@ECHO OFF
SET USERNAME=SomeUserName

:: retrieve user's SID, store in file. NOTE: a user can have more than 1 SID.
wmic useraccount where name='%USERNAME%' get sid | FINDSTR "^S-" > tmp.txt

:: load result into variable. NOTE: this will load the first line only.
SET /P SID_=<tmp.txt

:: remove spaces which turned out to be appended at the end.
SET SID=%SID_: =%

:: delete key in the registry (will probably required elevated privileges)
:: the /F causes reg.exe not to ask for confirmation
REG DELETE "HKEY_USERS\%SID%\test" /F

:: cleanup
DEL tmp.txt

我不知道“确定当前SID并删除密钥”的简单方法。