中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-12 00:06
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何从注册表中获取到系统环境变量,并把其中文件保存 查看 1,050 回复 4
楼 主 如何从注册表中获取到系统环境变量,并把其中文件保存 发表于 2010-08-03 18:13 ·  中国 安徽 合肥 移动
新手上路
积分 3
发帖 3
注册 2009-02-05 16:25
17年会员
UID 138103
性别 男
状态 离线
RT.
我想使用批处理来保存我的文档,桌面,和收藏夹里的内容到D盘
但是很多电脑环境变量有的改变了.不能通过这段命令来保存xcopy /e /q /h /i /c /y "%userprofile%\桌面\*.*" "d:\Backup\桌面"
xcopy /e /q /h /i /c /y "%userprofile%\我的文档\*.*" "d:\Backup\桌面"
xcopy /e /q /h /i /c /y "%userprofile%\Favorites\*.*" "d:\Backup\桌面"
查看了下注册表内的环境变量
这个语句:reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" >1.txt

1.txt内容如下:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
AppData REG_EXPAND_SZ %USERPROFILE%\Application Data
Desktop REG_EXPAND_SZ %USERPROFILE%\桌面
Favorites REG_EXPAND_SZ D:\My Documents\Favorites
NetHood REG_EXPAND_SZ %USERPROFILE%\NetHood
Personal REG_EXPAND_SZ D:\My Documents
PrintHood REG_EXPAND_SZ %USERPROFILE%\PrintHood
Templates REG_EXPAND_SZ %USERPROFILE%\Templates
My Pictures REG_EXPAND_SZ D:\My Documents\My Pictures
My Music REG_EXPAND_SZ D:\My Documents\My Music

现在的问题是如何把
Favorites REG_EXPAND_SZ D:\My Documents\Favorites
后面的值赋予.使之可以复制其中的内容~~
想请教下论坛高手如何实现这个目标..希望给予些指点~~
批处理新手留..
2 发表于 2010-08-04 00:42 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
学习一下如何使用for命令吧
3 发表于 2010-08-04 14:26 ·  中国 广东 汕头 电信
新手上路
积分 4
发帖 4
注册 2010-07-31 09:33
16年会员
UID 171521
性别 男
状态 离线
for /f "skip=4 tokens=3" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v desktop') do (xcopy /e /q /h /i /c /y "%%a\*.*" "d:\Backup\桌面")
for /f "skip=4 tokens=3" %%b in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal') do (xcopy /e /q /h /i /c /y "%%b\*.*" "d:\Backup\桌面")
for /f "skip=4 tokens=3" %%c in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Favorites') do (xcopy /e /q /h /i /c /y "%%c\*.*" "d:\Backup\桌面")

[ Last edited by wys0754 on 2010-8-4 at 14:34 ]
4 发表于 2010-08-04 19:31 ·  中国 安徽 合肥 移动
新手上路
积分 3
发帖 3
注册 2009-02-05 16:25
17年会员
UID 138103
性别 男
状态 离线
谢谢楼上的回答...试了你的代码..出错了..::
C:\Documents and Settings\Administrator\桌面\V
"D:\My\*.*" "d:\Backup\桌面" )
找不到文件 - *.*
复制了 0 个文件

注册表键值:
Favorites REG_EXPAND_SZ D:\My Documents\Favorites
这个键值MY后面带空格的...我找到一个方法获取了出来.(呵呵.也是咱们论坛的内容.是提取注册表两个内容.合并后写入另一个地址的帖子..)
@echo off
set p=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
for /f "skip=4 tokens=2*" %%a in ('reg query "%p%" /v Desktop') do set "ver=%%b"
for /f "skip=4 tokens=2*" %%c in ('reg query "%p%" /v Favorites') do set "servp=%%d"
for /f "skip=4 tokens=2*" %%e in ('reg query "%p%" /v Personal') do set "servp1=%%f"
echo %ver% %servp% %servp1%
pause
xcopy /e /q /h /i /c /y "%ver%\*.*" "d:\Backup\桌面"
xcopy /e /q /h /i /c /y "%servp%\*.*" "d:\Backup\收藏夹"
xcopy /e /q /h /i /c /y "%servp1%\*.*" "d:\Backup\我的文档"

整个文件还需要更加完善了修改..
这段对于修改了环境变量的系统米作用..
明天继续学习下..

[ Last edited by wushi4057216 on 2010-8-4 at 19:32 ]
5 发表于 2010-08-04 23:43 ·  中国 广东 茂名 联通
新手上路
积分 4
发帖 4
注册 2010-07-31 09:33
16年会员
UID 171521
性别 男
状态 离线
呵呵,确实忘了还有空格哪。
for /f "skip=4 tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v desktop' do (xcopy /e /q /h /i /c /y "%%b\*.*" "d:\Backup\桌面"
for /f "skip=4 tokens=2*" %%c in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal' do (xcopy /e /q /h /i /c /y "%%d\*.*" "d:\Backup\桌面"
for /f "skip=4 tokens=2*" %%e in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Favorites' do (xcopy /e /q /h /i /c /y "%%f\*.*" "d:\Backup\桌面"


[ Last edited by wys0754 on 2010-8-5 at 00:30 ]
论坛跳转: