中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-28 17:27
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]如何用脚本转到“我的文档”所在的盘? 查看 827 回复 9
楼 主 [已结]如何用脚本转到“我的文档”所在的盘? 发表于 2008-01-12 17:09 ·  中国 安徽 宿州 电信
银牌会员
★★★
积分 1,339
发帖 595
注册 2004-05-26 00:00
22年会员
UID 25306
性别 男
来自 安徽 宿州
状态 离线
如题。
比如,我的文档如果在C盘,则转到C:;如果我的文档在D盘,则转到D:。如何用脚本来实现?

[ Last edited by chujiafu on 2008-1-15 at 09:14 AM ]
2 发表于 2008-01-12 18:21 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
@echo off
regedit /e 1.reg "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
for /f "tokens=1* delims==" %%i in ('type 1.reg^|find /i "Personal"') do echo %%~dj
del 1.reg
pause

@echo off
regedit /e 1.reg "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
for /f "tokens=1* delims==" %%i in ('type 1.reg^|find /i "Personal"') do set Personal=%%j
set Personal=%Personal:\\=\%
echo %Personal%
pause

本来是很简单的,但是考虑到我的文档可能存在中文名所以用regedit /e而不是reg query
第一高手 第二高手

3 发表于 2008-01-12 18:43 ·  中国 北京 海淀区 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
19年会员
UID 87277
性别 男
来自 cmd.exe
状态 离线
reg query不能支持中文?
4 发表于 2008-01-12 18:53 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
假设“我的文档”是“D:\我的文档”运行下面的代码屏幕显示 D:\我?

@echo off
for /f "tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Personal ^|find /i "Personal"') do set Personal=%%b
echo %Personal%
pause
第一高手 第二高手

5 发表于 2008-01-13 12:10 ·  中国 广东 深圳 电信
初级用户
蝙蝠侠是写批处理的人
积分 54
发帖 24
注册 2008-01-04 20:34
18年会员
UID 107683
性别 男
状态 离线
  受教了,没想到REG有这样的局限性。

  仔细看了一下REG QUERY中文的输出,发现其重定向或管道出来的字节数其实是字符数,因此遇到中文一类的双字节字符输出时,输出总字节数与实际所需的字节数不符。莫非是微软自己在做国际化时遗留的BUG?

  奇怪的是直接让REG QUERY中文输出到Console是显示正确的,重定向或管道出来就会出现前述的问题。如果能有办法把它给Console的输出重定向出来,当可解决问题。没有头绪。-_-
6 发表于 2008-01-13 13:48 ·  中国 安徽 宿州 电信
银牌会员
★★★
积分 1,339
发帖 595
注册 2004-05-26 00:00
22年会员
UID 25306
性别 男
来自 安徽 宿州
状态 离线
谢谢各位兄弟。
我试了下Fastslz兄弟2楼的第一段代码,可以显示“我的文档”所在的盘符。怎样转到该盘呢?比如,我的文档在D盘,怎样执行Dir d:呢?
7 发表于 2008-01-13 13:56 ·  中国 广西 玉林 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
cd/d %Personal%
Dir
8 发表于 2008-01-13 16:33 ·  美国 加利福尼亚州 阿拉梅达 费利蒙 Hurricane_Electric公司
银牌会员
★★★
积分 1,339
发帖 595
注册 2004-05-26 00:00
22年会员
UID 25306
性别 男
来自 安徽 宿州
状态 离线
谢谢Zh159兄弟,这样不行呀。Dir显示的是这个脚本所在的目录。
9 发表于 2008-01-13 17:00 ·  中国 广西 玉林 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
@echo off
regedit /e 1.reg "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
for /f "tokens=1* delims==" %%i in ('type 1.reg^|find /i "Personal"') do set Personal=%%j
set Personal=%Personal:\\=\%
echo %Personal%
cd/d "%Personal%"
dir
pause
10 发表于 2008-01-15 09:10 ·  中国 安徽 宿州 泗县 电信
银牌会员
★★★
积分 1,339
发帖 595
注册 2004-05-26 00:00
22年会员
UID 25306
性别 男
来自 安徽 宿州
状态 离线
谢谢Zh159兄,可以了。
论坛跳转: