中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]如何用批处理分析注册表中收藏夹的路径?
« [1] [2] »
作者:
标题: [已结]如何用批处理分析注册表中收藏夹的路径? 上一主题 | 下一主题
sglxy
中级用户

MS-DOS爱好者


积分 397
发帖 87
注册 2002-12-15
状态 离线
『楼 主』:  [已结]如何用批处理分析注册表中收藏夹的路径?

我发现许多Windows XP用户的收藏夹的路径并非默认的,而是经用户自己修改的。在备份收藏夹时常常是大费周折,后来我发现在注册表中可以找到收藏夹的路径。以下是我在一个用户注册表中手工导出的键值:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
"Favorites"="D:\\!临时文件夹\\!互联网临时文件夹\\Favorites"
"Personal"="D:\\!我的文档"
"SendTo"="D:\\!我的文档\\SendTo"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
"Favorites"="D:\\!临时文件夹\\!互联网临时文件夹\\Favorites"
"Personal"="D:\\!我的文档"
"SendTo"="D:\\!我的文档\\SendTo"
-------------------------------------------------------
我想通过批处理实现以下目的:
1、先用批处理自动导出用户注册表的[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]和[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]分支。并存为Favorites.reg文件。
2、然后,再用批处理对Favorites.reg文件进行处理,取得Favorites所在路径并保存到%fav%变量中备用。

请问批处理中如何能达到这个效果?,请各位朋友指点,在此先谢谢了!

[ Last edited by sglxy on 2006-11-3 at 08:11 AM ]

2006-10-31 09:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 2 楼』:  

晕,这么复杂啊~:)

我装有系统的分区里除了IE收藏夹(%HOMEPATH%\Favorites)备份以外,
桌面上使用的重要文档和常进的目录,全是以快捷方式指向非系统所在分区的某个目录而已,
系统坏了除了收藏夹要备份以外(RAR压缩收藏夹目录,也就一分钟),
然后没有再要备份的了,GHOST就完了~:)

(系统分区除了那个收藏夹以外,从来不放任何将来还要备份花时间的东东,这样省事)



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-10-31 10:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sglxy
中级用户

MS-DOS爱好者


积分 397
发帖 87
注册 2002-12-15
状态 离线
『第 3 楼』:  

我只想将其中的"Favorites"="D:\\!临时文件夹\\!互联网临时文件夹\\Favorites"
找出来改变为D:\!临时文件夹\!互联网临时文件夹\Favorites 并保存到%fav%变量中去。

2006-10-31 10:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 4 楼』:  


@ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=1,2,*" %%i in ('REG QUERY "HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\SHELL FOLDERS" ^| FIND /I "FAVORITES"') DO (
        SET Fav_IN_SHELL_FAV=%%k
        ECHO Favorites在SHELL FOLDERS子键下的值是:
        ECHO !Fav_IN_SHELL_FAV!)
echo[&echo]
for /f "tokens=1,2,*" %%i in ('REG QUERY "HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\USER SHELL FOLDERS" ^| FIND /I "FAVORITES"') DO (
        SET Fav_USER_SHELL_FAV=%%k
        ECHO Favorites在USER SHELL FOLDERS子键下的值是:
        ECHO !Fav_USER_SHELL_FAV!)
PAUSE


2006-10-31 12:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 5 楼』:  


@echo off
for /f "tokens=2,*" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Favorites"') do (
set Fav=%%j
)
echo 当前收藏夹位于 %Fav%
pause
[ Last edited by fastslz on 2006-10-31 at 12:52 PM ]



第一高手    第二高手

2006-10-31 12:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sglxy
中级用户

MS-DOS爱好者


积分 397
发帖 87
注册 2002-12-15
状态 离线
『第 6 楼』:  

两位朋友的方法都很精练,但是得到的值却并非我所希望的D:\!临时文件夹\!互联网临时文件夹\Favorites。而是好象短路径的那种:当前收藏夹位于 D:\互联网临时文?

2006-10-31 19:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 7 楼』:  

其实用鼠标直接去剪切到后面的盘就行了,剪好了做下备份就一直认后面的盘了。

2006-10-31 20:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 8 楼』:  

好象短路径的那种?中文长文件名我未测试~



第一高手    第二高手

2006-10-31 21:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sglxy
中级用户

MS-DOS爱好者


积分 397
发帖 87
注册 2002-12-15
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by NaturalJ0 at 2006-10-31 08:27 PM:
其实用鼠标直接去剪切到后面的盘就行了,剪好了做下备份就一直认后面的盘了。

谢谢NaturalJ0的热心解答,之所以需要批处理的方式自动分析,是希望它成为某一批处理的其中一个模块。在系统维护中大大减轻操作者的劳动强度。而用鼠标就失去了意义。

另外,本人在4、5楼朋友的启发下。将其作品改写如下,请朋友们指正:
@echo off
reg export "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" fav.reg
for /f "tokens=2 delims==" %%b in ('find /i "Favorites" fav.reg') do set fav=%%b
set fav=%fav:\\=\%
set fav=%fav:"=%
echo 本机的收藏夹位于%fav%>收藏夹.txt
del fav.reg
pause>nul


但是本批处理脚本运行结束后,总一个提示“操作成功结束”。该如何去掉它?

[ Last edited by sglxy on 2006-10-31 at 09:26 PM ]

2006-10-31 21:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 10 楼』:  


@echo off
REG EXPORT "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" a.reg /nt4>nul
for /f "tokens=2 delims==" %%a in ('find "Favorites" a.reg') do set fav=%%~a
echo 收藏夹位于%fav%




我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2006-10-31 22:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sglxy
中级用户

MS-DOS爱好者


积分 397
发帖 87
注册 2002-12-15
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by qwe1234567 at 2006-10-31 10:04 PM:
[code]@echo off
REG EXPORT "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" a.reg /nt4>nul
for /f "tokens=2 delims==" %%a in ('find "Favorites&q ...

谢谢qwe1234567版主,我明白了,原来这句提示是reg命令产生的,我开始以为是del fav.reg产生的。

2006-10-31 22:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 12 楼』:  


  想不到 reg export 还有一个隐藏的参数,呵呵,学习了。


2006-11-1 00:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sglxy
中级用户

MS-DOS爱好者


积分 397
发帖 87
注册 2002-12-15
状态 离线
『第 13 楼』:  

请问超级版主,REG EXPORT "HKCU\Software\……一句中的“/nt4”参数代表什么意思?

另外,你的帖子里有一句:set fav=%%~a 我知道是附值。 但是其中的
“%%a”为何写成“%%~a”,它的意义是什么?请指点一下。

[ Last edited by sglxy on 2006-11-1 at 12:54 AM ]

2006-11-1 00:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 14 楼』:  


  "/nt4"参数是指定导出的注册表文件里面表明的注册表版本信息,也就是"REGEDIT4"了,没有"/nt4"的参数,那么版本就可能是"Windows Registry Editor Version 5.00"了。

  "%%~a"是"%%a"变量的扩展,作用就是去掉"%%a"外面的引号。


2006-11-1 01:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 15 楼』:  

  代超版回答:%%~a 是删除字符串前后的任何引号的意思。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-11-1 01:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: