批处理for语句读取注册表并赋值给变量,
具体就是用批处理从注册表读取我的桌面的路径,并将路径赋值到某个变量,这个变量要在下一个命令里用到,查询注册表的语句谁都知道,难就难在怎么用for语句或其它方法把查询到的结...
具体就是用批处理从注册表读取我的桌面的路径,并将路径赋值到某个变量,这个变量要在下一个命令里用到,查询注册表的语句谁都知道,难就难在怎么用for语句或其它方法把查询到的结果提取出来,查询到的结果是HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
Desktop REG_EXPAND_SZ %USERPROFILE%\Desktop,我们只要路径,而最终要的结果是%USERPROFILE%\Desktop,主要是在PE和WinXp Win7 Win10系统下要用到,因为每个系统下的桌面路径都不一样,所以要用这个方法来查询,不要只跟我说思路,我已经在百度上搜了很多,自己也想了很久,麻烦把最终代码写出来并测试没问题,下面是我写的,不知道错在哪,@echo off
set "str=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
for /f "tokens=2*" %%a in ('reg query "%str%" /v Desktop 2^>nul') do set "a=%%b"
echo %a% ^|find "Desktop"
pause 展开
Desktop REG_EXPAND_SZ %USERPROFILE%\Desktop,我们只要路径,而最终要的结果是%USERPROFILE%\Desktop,主要是在PE和WinXp Win7 Win10系统下要用到,因为每个系统下的桌面路径都不一样,所以要用这个方法来查询,不要只跟我说思路,我已经在百度上搜了很多,自己也想了很久,麻烦把最终代码写出来并测试没问题,下面是我写的,不知道错在哪,@echo off
set "str=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
for /f "tokens=2*" %%a in ('reg query "%str%" /v Desktop 2^>nul') do set "a=%%b"
echo %a% ^|find "Desktop"
pause 展开
1个回答
展开全部
感觉这代码还是不错的,该注册表查询项的结果是多行,刚好要取的是最后一行,也就是说 变量a应最终是取到了要的结果,即直接echo %a% 验证结果
如果取的不是最后一行则要把 ^|find "Desktop 加在do之前的括号里
('reg query "%str%" /v Desktop ^|find "Desktop"')
如果取的不是最后一行则要把 ^|find "Desktop 加在do之前的括号里
('reg query "%str%" /v Desktop ^|find "Desktop"')
更多追问追答
追问
set "str=……因字数限制,同上……
for /f "tokens=*" %%a in ('reg query "%str%" /v Desktop ^|find "Desktop"') do (set "a=%%a"& echo a=%%a& echo b=%%b& echo c=%%c& echo d=%%d)
echo %a%
还不行,还是不知道怎么搞,感觉for语句太复杂了,批处理真操蛋
追答
原来的就行啊!你不是仅要那路径吗?怎么搞出%%a...%%d来了
再说 tokens=2* %%a 也只能定义%%a和%%b 两个 (for 命令确实是复杂,熟练了也就那回事)
原代码set "a=%%b" 表示取每行由空格分隔的2段之后的部分赋给a
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询