标题: [系统相关] 获取系统文件夹(我的文档、桌面等)的路径 [打印本页]
作者: ibm 时间: 2008-9-29 18:53 标题: 获取系统文件夹(我的文档、桌面等)的路径
%Allusersprofile% 等于 C:\Documents and Settings\All Users\
%Computername% 等于 计算机名
%Homepath% 等于 C:\Documents and Settings\ “当前用户文件夹”\
%ProgramFiles% 等于 C:\Program Files\
??什么 等于 桌面
??什么 等于 我的文档
??什么 等于 收藏夹
(原始路径被更改过)
如果要提取注册表的值才能知道路径,如何用批提取路径到变量中?
谢谢!
[ 本帖最后由 ibm 于 2008-9-29 19:25 编辑 ]
作者: pusofalse 时间: 2008-9-29 18:59
- reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
复制代码
作者: ibm 时间: 2008-9-29 19:02
这个我知道,我只想要路径,该如何做?
谢谢!
作者: pusofalse 时间: 2008-9-29 19:09
- @echo off
- for /f "delims=" %%a in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"') do (
- set "var=%%a"
- call echo %%var:*reg_sz=%%
- )
- pause
复制代码
作者: ibm 时间: 2008-9-29 19:45
非常感谢!
但有一句没读懂:
call echo %%var:*reg_sz=%%
什么意思?
还有,我只想提取桌面的路径到变量,以便后面使用,该如何写代码?
我是菜鸟,自己试了试写代码,不是无法实现,就是感觉写的有点复杂了,还请多多帮助,
谢谢!
[ 本帖最后由 ibm 于 2008-9-29 20:24 编辑 ]
作者: pusofalse 时间: 2008-9-29 20:30
call echo %%var:*reg_sz=%%
CALL在此处是延迟的作用。%%var:*reg_sz=%%,把变量var中的reg_sz及其前面所有的字符删除。
只提取桌面路径:- @echo off
- reg export "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" tmp.x>nul
- for /f "tokens=1* delims==" %%i in ('type tmp.x^|findstr /i "desktop"') do set "desktop=%%~j"
- del tmp.x
- echo %desktop%
- pause
复制代码
[ 本帖最后由 pusofalse 于 2008-9-29 20:39 编辑 ]
作者: ibm 时间: 2008-9-29 20:50 标题: 回复 6楼 的帖子
对CALL的解释,我还是不明白,继续学习中,谢谢版主!
代码有点小BUG,我修改了一下:-
- @echo off
- reg export "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" tmp.x>nul
- for /f "tokens=1* delims==" %%i in ('type tmp.x^|findstr /i "desktop"') do set "desktop=%%~j"
- del tmp.x
- set "desktop=%desktop:\\=\%"
- echo %desktop%
- pause
复制代码
获取的是系统原始的“桌面”路径,
如果修改过“桌面”路径,此代码将不能完成任务,
见9楼
[ 本帖最后由 ibm 于 2008-9-29 21:44 编辑 ]
作者: pusofalse 时间: 2008-9-29 21:19 标题: 回复 7楼 的帖子
7楼正解~ 注册表中导出的路径都是\\,不解~
作者: ibm 时间: 2008-9-29 21:23
并非正解,我发现了问题:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
中的桌面的路径是系统的原始路径,如果更改了桌面路径,并不表现在这里,
而是在
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
-
-
- ECHO OFF
- REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders">%Temp%\Tmp.x
- FOR /F "TOKENS=2* DELIMS= " %%I IN ('TYPE %Temp%\Tmp.x^|FINDSTR /I "Desktop"') DO ( SET "Desktop=%%~J" )
- ERASE %Temp%\Tmp.x
- ECHO %Desktop%
- pause
-
复制代码
[ 本帖最后由 ibm 于 2008-9-29 21:41 编辑 ]
作者: pusofalse 时间: 2008-9-29 21:32 标题: 回复 9楼 的帖子
把你的命令结果一字不差地贴上来,具体问题具体分析。
作者: ibm 时间: 2008-9-29 21:44
问题已经解决
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |