中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 18:55
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]如何用批处理分析注册表中收藏夹的路径?
楼 主 [已结]如何用批处理分析注册表中收藏夹的路径? 发表于 2006-10-31 09:37 ·  中国 河北 沧州 任丘市 华北油田网络
中级用户
★★
MS-DOS爱好者
积分 397
发帖 87
注册 2002-12-15 00:00
UID 517
性别 男
状态 离线
我发现许多Windows XP用户的收藏夹的路径并非默认的,而是经用户自己修改的。在备份收藏夹时常常是大费周折,后来我发现在注册表中可以找到收藏夹的路径。以下是我在一个用户注册表中手工导出的键值:

"Favorites"="D:\\!临时文件夹\\!互联网临时文件夹\\Favorites"
"Personal"="D:\\!我的文档"
"SendTo"="D:\\!我的文档\\SendTo"


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

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

[ Last edited by sglxy on 2006-11-3 at 08:11 AM ]
2 发表于 2006-10-31 10:07 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
UID 63324
性别 男
状态 离线
晕,这么复杂啊~:)

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

(系统分区除了那个收藏夹以外,从来不放任何将来还要备份花时间的东东,这样省事)
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
3 发表于 2006-10-31 10:44 ·  中国 河北 沧州 任丘市 华北油田网络
中级用户
★★
MS-DOS爱好者
积分 397
发帖 87
注册 2002-12-15 00:00
UID 517
性别 男
状态 离线
我只想将其中的"Favorites"="D:\\!临时文件夹\\!互联网临时文件夹\\Favorites"
找出来改变为D:\!临时文件夹\!互联网临时文件夹\Favorites 并保存到%fav%变量中去。
4 发表于 2006-10-31 12:22 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线


@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
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

5 发表于 2006-10-31 12:37 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
@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 ]
第一高手 第二高手

6 发表于 2006-10-31 19:09 ·  中国 河北 沧州 任丘市 华北油田网络
中级用户
★★
MS-DOS爱好者
积分 397
发帖 87
注册 2002-12-15 00:00
UID 517
性别 男
状态 离线
两位朋友的方法都很精练,但是得到的值却并非我所希望的D:\!临时文件夹\!互联网临时文件夹\Favorites。而是好象短路径的那种:当前收藏夹位于 D:\互联网临时文?
7 发表于 2006-10-31 20:27 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
UID 60484
状态 离线
其实用鼠标直接去剪切到后面的盘就行了,剪好了做下备份就一直认后面的盘了。
8 发表于 2006-10-31 21:05 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
UID 54766
性别 男
来自 上海
状态 离线
好象短路径的那种?中文长文件名我未测试~
第一高手 第二高手

9 发表于 2006-10-31 21:18 ·  中国 河北 沧州
中级用户
★★
MS-DOS爱好者
积分 397
发帖 87
注册 2002-12-15 00:00
UID 517
性别 男
状态 离线
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 ]
10 发表于 2006-10-31 22:04 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
UID 42843
性别 男
来自 四川南充
状态 离线
@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%
11 发表于 2006-10-31 22:36 ·  中国 河北 沧州
中级用户
★★
MS-DOS爱好者
积分 397
发帖 87
注册 2002-12-15 00:00
UID 517
性别 男
状态 离线
Originally posted by qwe1234567 at 2006-10-31 10:04 PM:
@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产生的。
12 发表于 2006-11-01 00:23 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

  想不到 reg export 还有一个隐藏的参数,呵呵,学习了。
13 发表于 2006-11-01 00:51 ·  中国 河北 沧州 任丘市 华北油田网络
中级用户
★★
MS-DOS爱好者
积分 397
发帖 87
注册 2002-12-15 00:00
UID 517
性别 男
状态 离线
请问超级版主,REG EXPORT "HKCU\Software\……一句中的“/nt4”参数代表什么意思?

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

[ Last edited by sglxy on 2006-11-1 at 12:54 AM ]
14 发表于 2006-11-01 01:39 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

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

  "%%~a"是"%%a"变量的扩展,作用就是去掉"%%a"外面的引号。
15 发表于 2006-11-01 01:41 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  代超版回答:%%~a 是删除字符串前后的任何引号的意思。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
论坛跳转: