Board logo

标题: [系统相关] 获取系统文件夹(我的文档、桌面等)的路径 [打印本页]

作者: 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

  1. reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
复制代码

作者: ibm    时间: 2008-9-29 19:02

这个我知道,我只想要路径,该如何做?

谢谢!
作者: pusofalse    时间: 2008-9-29 19:09

  1. @echo off
  2. for /f "delims=" %%a in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"') do (
  3.       set "var=%%a"
  4.       call echo %%var:*reg_sz=%%
  5. )
  6. 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及其前面所有的字符删除。
只提取桌面路径:
  1. @echo off
  2. reg export "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" tmp.x>nul
  3. for /f "tokens=1* delims==" %%i in ('type tmp.x^|findstr /i "desktop"') do set "desktop=%%~j"
  4. del tmp.x
  5. echo %desktop%
  6. pause
复制代码

[ 本帖最后由 pusofalse 于 2008-9-29 20:39 编辑 ]
作者: ibm    时间: 2008-9-29 20:50     标题: 回复 6楼 的帖子

对CALL的解释,我还是不明白,继续学习中,谢谢版主!

代码有点小BUG,我修改了一下:
  1. @echo off
  2. reg export "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" tmp.x>nul
  3. for /f "tokens=1* delims==" %%i in ('type tmp.x^|findstr /i "desktop"') do set "desktop=%%~j"
  4. del tmp.x
  5. set "desktop=%desktop:\\=\%"
  6. echo %desktop%
  7. 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"

  1. ECHO OFF
  2. REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders">%Temp%\Tmp.x
  3. FOR /F "TOKENS=2* DELIMS= " %%I IN ('TYPE %Temp%\Tmp.x^|FINDSTR /I "Desktop"') DO ( SET "Desktop=%%~J" )
  4. ERASE %Temp%\Tmp.x
  5. ECHO %Desktop%
  6. pause
复制代码

[ 本帖最后由 ibm 于 2008-9-29 21:41 编辑 ]
作者: pusofalse    时间: 2008-9-29 21:32     标题: 回复 9楼 的帖子

把你的命令结果一字不差地贴上来,具体问题具体分析。
作者: ibm    时间: 2008-9-29 21:44

问题已经解决




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2