中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-25 03:54
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]SendTo+批处理实用小工具--加强版发送到 精华II 查看 77,259 回复 75
31 发表于 2006-10-03 12:31 ·  中国 河南 洛阳 鹏博士宽带
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
20年会员
UID 40733
性别 男
状态 离线
Re fastslz
你用的什么系统?好像是2000吧?你的 reg 和我的版本不一样,输出也不一样,你调整一下 skip= 后的值试一下调为 1 试一下,或者换为别的数字,或者去掉 skip= 。

[ Last edited by 无奈何 on 2006-10-3 at 12:45 ]
  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

32 发表于 2006-10-03 13:03 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
奇怪了XP SP2呀
比尔给我特殊化了
第一高手 第二高手

33 发表于 2006-10-03 13:18 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
Re fastslz:
关于你的测试3,从你的测试1可以得到以下几点:
1.skip最好==4
2."delims= "无效。
在你的显示结果中,REG_SZ后面有8个空格的内容,这很容易联想到在windows中tab默认就占8个字符。另外,在批处理中,如果不指定delims,则默认delims=空格/Tab,所以很显然,你的"delims= "这个参数是没有效果的,反而还会使tab符失去分割令牌的作用。
建议测试以下代码:
code 1:

@echo off
set reg="HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
for /f "tokens=2,*" %%i in ('reg query %reg% /v "Favorites"') do set Favorites=%%j
echo %Favorites%
pause


code 2:

@echo off
set reg="HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
for /f "tokens=2,* delims=这里是个tab" %%i in ('reg query %reg% /v "Favorites"') do set Favorites=%%j
echo %Favorites%
pause




end:
至于你的测试4,就更不通用了,如果reg命令的输出中包含REG_SZ中任意一个字符都可能得到错误的结果。因为delims参数并非按字符串来获得分隔符,而是把delims=后面的字符串当作分隔符集,也就是说其中任意一个字符都被视为分隔符。(区别大小写)

参考:

skip=n - 指在文件开始时忽略的行数。
delims=xxx - 指分隔符集。这个替换了空格和跳格键
默认分隔符集。
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代
的 for 本身。这会导致额外变量名称的分配。m-n
格式为一个范围。通过 nth 符号指定 mth。如果
符号字符串中的最后一个字符星号,
那么额外的变量将在最后一个符号解析之后
分配并接受行的保留文本。
34 发表于 2006-10-03 14:16 ·  中国 河南 洛阳 鹏博士宽带
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
20年会员
UID 40733
性别 男
状态 离线
谢谢 3742668 兄的提醒,本意添加 skip 增加一下效率,看来是多此一举了。修正一下。我现在用的是 2k3 ,看来确实有必要安个虚拟机多测试一下。
  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

35 发表于 2006-10-03 14:32 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
谢谢3742668解答看了你参考对其有了更深的了解

现作如下总结:

1:由于我的Windows XP pro SP2 的特殊性(已经确定reg.exe未被替换过),无奈何版主的代码在我的XP里不能正常执行,而此代码在2003下能正常执行。

::无奈何版主的代码
set reg="HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
for /f "skip=2 tokens=2* delims= " %%i in ('reg query %reg% /v "Favorites"') do set Favorites=%%j
echo %Favorites%



2:3742668版主的代码在我的XP里能正常执行且此代码在2003下也能正常执行。可见3742668版主的代码通用性更强

::3742668版主的代码
set reg="HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
for /f "tokens=2,*" %%i in ('reg query %reg% /v "Favorites"') do set Favorites=%%j
echo %Favorites%
pause


3:关于我的Windows XP版本说明,Windows XP pro SP2产品ID属于011段的(网络上所留传的XP版本产品ID一般都属于640段的)本人使用至今发现这2个版本XP确实有所不同。
XP补丁已全部更新至2006-10,已安装.NET Framework 2.0。能有区别的也就这些了。reg.exe MD5:7f1e65bde053985ba645340bc0cf6497
第一高手 第二高手

36 发表于 2006-10-03 14:38 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
呵呵...无奈何版主也没有睡呀,辛苦了、注意身体哦
第一高手 第二高手

37 发表于 2006-10-06 11:02 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
vbs版本的写了两个功能,昨天晚上传上来修改的时候又稀里糊涂地删掉了,今天重新传上来,大家帮忙测试。
附件解压到目录后运行其中的 安装.vbs 就可以安装上了。
因为这几天忙得狠,又微感小恙,代码没组织好,乱得狠,高人们别偷笑。
附件
SendTo+(VBS版).rar (3.29 KiB, 下载附件所需积分 1 点, 下载次数: 102)
38 发表于 2006-10-08 05:42 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
vbs版的我喜欢^_^

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
39 发表于 2006-10-08 05:48 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
我也下载试用了,vbs版的精简一点
electronixtar 你的vbs功底也了得,改天也露一手呀^_^
第一高手 第二高手

40 发表于 2006-10-08 07:00 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
寒~~我写的vbs就当片断好了。和版主们还差得远

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
41 发表于 2006-10-10 23:50 ·  中国 北京 中移铁通
荣誉版主
★★★
积分 1,338
发帖 356
注册 2005-07-15 12:09
20年会员
UID 40733
性别 男
状态 离线
谢谢 3742668
辛苦了,好身体最重要,我最近也感觉哪都不舒服。
试用先!
  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

42 发表于 2006-10-12 07:30 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
今天检查了一下3个脚本,发觉有点小毛病,不过并不影响使用,不知道有没有测试出有问题的?
至于另外几个功能,都比较简单,都没有人尝试的吗?
43 发表于 2006-11-23 05:02
中级用户
★★
DOS之日
积分 337
发帖 161
注册 2006-11-04 05:27
19年会员
UID 69523
性别 男
状态 离线
支持 无奈何
for /f %%h in (`echo hxuan`) do for /f %%x in (`echo hxuan`) do if %%h==%%x nul
44 发表于 2006-11-25 03:11 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
非常精彩的贴子~~无限欣赏~:)
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
45 发表于 2006-11-25 03:44 ·  中国 北京 朝阳区 联通
高级用户
★★
朦胧的世界
积分 579
发帖 218
注册 2006-10-24 04:29
19年会员
UID 67972
状态 离线
一起欣赏。。。

认识自己,降伏自己,改变自己
,才能改变别人!
论坛跳转: