|
无奈何
荣誉版主
积分 1338
发帖 356
注册 2005-7-15
状态 离线
|
『楼 主』:
[原创]SendTo+批处理实用小工具--加强版发送到
-------------------------
小修正一下,感谢 fastslz 发现问题 3742668 提出解决方案。
便于及时更新修改文件,以链接的形式提供下载。
以后所有版本下面链接是最新文件。
下载:www.songjun.org/SendTo+.zip
-------------------------
因为个人原因有些时间没能来论坛了,辛苦 3742668 兄管理版面;又看到 willsort 兄暂时隐退的消息,挺怀念一起讨论的日子;同时祝贺 namejm 加入版主队伍。作为版主我觉得自己并不尽职。我将原先做的小东西整理细化了一下,作为国庆的小礼物送给大家。具体介绍可看下面的帮助文件。
这是我用批处理制作的小软件,其中涉及到的知识点有注册表的查询添加、添加环境变量、动态显示选择提示、以及怎么在批处理中使用配置文件等等的内容。由于功能比较多,我虽然做了很多的测试但仍然不能保证不出问题,有问题、建议、以及代码的讨论欢迎跟贴。由于批处理的功能有限,软件自带两个命令行小工具,单纯的用批处理实现是不可能的,希望有能力并感兴趣的朋友能不能做个 VBS 脚本版的。祝大家节日快乐。
附图一张
帮助:
本软件是用批处理制作的实用小工具,安装后会给“发送到”增加一些实用的特性,如:复制文件路径名、批量重命名、快速打开目录、剪贴板文字保存到文件等等。功能的实现是由20多个批处理脚本完成的,批处理有很强的可定制性,你甚至可以自己添加批处理脚本进去。
●安装说明
最初的版本只需将文件夹复制到当前用户 SendTo 目录下便可以使用全部功能了。当前版本中我制作了一个安装批处理,只需将文件解压到任意目录后执行 Install.cmd 按提示操作便可完成安装。批处理脚本中大量使用了 CMD 命令行的特性,所以不支持 9X 系列系统,2000 应该能用但我没做测试。软件安装过程会注册一个用户变量,位置在 HKEY_CURRENT_USER\Environment 下 SendTo+ 键,必须注销或重启后用户变量才生效,安装完成后会提示注销一下系统。
●功能说明
默认正常安装后会在当前用户 SendTo 目录下生成 SendTo+ 文件夹,使用方法是在任意目录选中文件或文件夹指向发送到、 SendTo+ 便会看到功能选项。注意选中文件和文件夹后的所调用的功能是不一样的,支持多选,只要是合乎情理的操作都支持多个文件或文件夹。目录列表及个人推荐度如下:
○命令提示符 ★★★
○打开目录 ★★★
◇添加此文件夹
◇移除此文件夹
○快捷方式
◇添加到“开始菜单”
◇添加到“快速启动” ★★
◇添加到“其它文件夹” ★★★
◇添加到“收藏”
○文本操作
◇复制文本文字到剪贴板
◇剪贴板文字到同名文本 ★★★
◇剪贴板文字生成新文本 ★★★★
◇剪贴板文字替换到文本
◇剪贴板文字追加到文本
◇清空文本文件
○文件操作
◇复制文件路径到剪贴板
◇复制文件名到剪贴板 ★★★
◇复制文件完整路径到剪贴板 ★★★★
◇随机数字批量重命名 ★★★
◇文本标题批量重命名 ★★★
◇序号数字批量重命名
◇以当前日期新建文件夹
◇以同名或剪贴板新建文件夹 ★★★
◇撤销上次批量重命名
◇加密批处理文件
●进阶说明
由于软件的使用很简单不做过多说明,说一下操作方式。部分的操作是区分当前选中的是文件还是文件夹的,如“命令提示符”项当选中文件时打开的命令窗口的路径是文件所在路径,而选中文件夹时为选中的文件夹路径。同样的还有“剪贴板文字生成新文本”项等,并且会以文本的第一行重新命名。最特特殊的是“以同名或剪贴板新建文件夹”选中文件会以相同名建立文件夹,选中文件夹会将剪贴板内容为名在其下建立文件夹,你可以尝试选中多个文件与文件夹看看有何效果。还有一些操作是无意义的,比如选中多个文件调用“以当前日期新建文件夹”只会生成一个文件夹,但选中多个文件夹会大不相同。还有一些操作是不区分文件和文件夹以及目录的,比如“撤销上次批量重命名”在那里操作结果是一样的。
关于在“发送到”生成的文件夹的名字,可以自己修改 SendTo+.ini 中 = 号后的内容,使其更合乎自己的使用习惯。其文件夹下的操作项名可以修改 Install.cmd 中 “/f:” 后跟随的 *.lnk 的名字,可以增加序号以使按习惯的顺序排列。在 SendTo+ 下 CMD 文件夹下的 ShortcutToFolder.ini 是添加到“其它文件夹”的文件记录,以“*”号开头的行会被置顶选择,当执行操作后,所需目标文件夹不在此处时会提示输入目标位置,并记录在此文件中,后续版本中会增加根据使用频繁度调整顺序功能。关于隐藏属性的 Desktop.ini 是文件夹显示图标的定义文件,请不要删除。
已知问题,当文件名含有 & | 等特殊字符时可能会操作失败,原因是发送到传递给脚本的参数默认是不加引号的会造成解析参数错误,对付的办法是更改文件名去掉特殊字符或在文件名中添加空格,除此没有彻底解决的办法。多文件操作时出现“Windows 无法访问指定设备、路径或文件。您可能没有合适的权限访问这个项目。”错误提示,是选择的文件太多,超过命令行的字符限制,解决的办法是减少文件的选择量。
软件中打包两个命令行小工具 winclip.exe 和 Shortcut.exe 可以在此处下载:http://dmst.aueb.gr/dds/sw/outwit/ 。要比微软的 clip.exe 和 Shortcut.exe 功能强大的多。批处理文件我进行了简单的加密,原理参见:http://www.cn-dos.net/forum/viewthread.php?tid=22254 。加密的目地不是不想让人看到源码,而是防止用户在不熟悉的情况下错误修改文件。如果你确信你在干什么,完全可以自行修改扩充,批处理脚本中有简单的注释。有问题和建议欢迎指正交流。
BY:无奈何@cn-dos.net
mail:wunaihe@gmail.com
2006.10.1
——————————————分割线———————————————
***********************************
版务日志
***********************************
操 作: 主题加精
执行人: 3742668
原 因: 无论从点击还是回复上来看,此贴
都达到精华的标准,且实用性较强
说 明: 由于目前并没有一个明确的加精依
据,所以如果对此次操作持怀疑态度
的朋友可以跟贴指出,或者于站内
的消息系统留言说明。
***********************************
[ Last edited by 无奈何 on 2006-10-3 at 14:36 ]
附件
1: SendTo+.gif (2006-10-2 03:26, 16.55 K, 下载附件所需积分 1 点
,下载次数: 60)
|
☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul
|
|
2006-10-2 03:26 |
|
|
fastslz
铂金会员
DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第
2 楼』:
太好了,下载使用并学习
部分功能是我一直想要,如果SendTo+ 菜单不是放在发送到里,能够独立伸展就好了(l类似WinRAR的层叠右键关联菜单),即美观又实用。期待无奈何版主下一个版本SendTo+ 能够独立伸展。
最后谢谢你的国庆礼物
|
第一高手 第二高手
我的小站
|
|
2006-10-2 05:05 |
|
|
fastslz
铂金会员
DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第
3 楼』:
无奈何版主
发现一个添加到“收藏”功能的不稳定的情况,我目前不能发送到收藏夹,原因:
::从注册表中获取“收藏”文件夹路径
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 除了HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
还有一个
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
我觉得上面一个键值有点死性不改的,真正起作用的是下面一个键值。如我设置收藏夹的代码:
REGEDIT4
;更改IE收藏夹位置
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
"Favorites"="E:\\TEMP\\Favorites"
;更改IE收藏夹位置
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
"Favorites"=hex(2):45,00,3a,00,5c,00,54,00,45,00,4d,00,50,00,5c,00,46,00,61,00,\
76,00,6f,00,72,00,69,00,74,00,65,00,73,00,00,00
hex值也是E:\TEMP\Favorites
[ Last edited by fastslz on 2006-10-2 at 05:39 ]
|
第一高手 第二高手
我的小站
|
|
2006-10-2 05:33 |
|
|
无奈何
荣誉版主
积分 1338
发帖 356
注册 2005-7-15
状态 离线
|
『第
4 楼』:
制作独立的折叠菜单不可能,必须编写 .dll 文件实现,而我不懂 windows 编程。
折中的办法是将最常用的功能拷贝到 SendTo 根目录,或者修改安装文件 Install.cmd 。请注意“打开目录” 可能不够灵活,其它快捷方式不依赖所在目录都没有问题。
|
☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul
|
|
2006-10-2 05:40 |
|
|
electronixtar
铂金会员
积分 7493
发帖 2672
注册 2005-9-2
状态 离线
|
『第
5 楼』:
好东东,收下了。
建议再加一个 合并文件 的简单功能,用 copy /b +
|
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'>" |
|
2006-10-2 07:43 |
|
|
无奈何
荣誉版主
积分 1338
发帖 356
注册 2005-7-15
状态 离线
|
『第
6 楼』:
Re fastslz
谢谢你的反馈,我无法重现你的错误。所有对User Shell Folders的修改都会反应到Shell Folders下的,Shell Folders下保存的是实际的路径。并且 reg.exe 无法查询User Shell Folders的键值,因为有更好的访问地方就是Shell Folders下。你是否可以尝试自行修改一下代码。
Re electronixtar
这个功能我考虑过,由于文件名复杂多变,不可能控制合并文件的前后顺序,只能提示用户选择,如此的话方便程度还不如在命令行里敲几下。你说呢?
|
☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul
|
|
2006-10-2 08:09 |
|
|
electronixtar
铂金会员
积分 7493
发帖 2672
注册 2005-9-2
状态 离线
|
『第
7 楼』:
合并功能很有用的,用sort命令可以很方便的完成这个任务。
其实WinRAR就可以文件合并,呵呵
|
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'>" |
|
2006-10-2 09:48 |
|
|
namejm
荣誉版主
batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第
8 楼』:
无奈何版主一出手就是精品,先顶再说。测试中ing……
|
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2006-10-2 10:25 |
|
|
pengfei
银牌会员
积分 1218
发帖 485
注册 2006-7-21 来自 湖南.娄底
状态 离线
|
『第
9 楼』:
无奈何版主的确出手不凡, 先顶再说~~~!
|
|
2006-10-2 10:33 |
|
|
3742668
荣誉版主
积分 2013
发帖 718
注册 2006-2-18
状态 离线
|
『第
10 楼』:
欢迎归来,呵呵.
关于你的那两个工具的问题,似乎一个是用来创建快捷方式,一个是用来操作剪贴板,我想用vbs来解决应该比较简单吧。
建议你发一个具体的参数格式出来,让广大的vbs爱好者也练练手。
|
|
2006-10-2 11:07 |
|
|
无奈何
荣誉版主
积分 1338
发帖 356
注册 2005-7-15
状态 离线
|
『第
11 楼』:
Re 3742668
我的意思不是单单替换掉这两个命令行工具,而是完全的用 VBS 来完成所有功能,做一个纯粹的 VBS 版本,虽然我不懂但我猜想都是常规操作也不会过于复杂。 VBS 版可能会比批处理版更受欢迎,因为批处理无法避开许多弊端,比如参数字符限制,特殊字符处理还有非交互下也会弹出黑黑的界面,虽然我已经尽力使其不影响视觉了,但仍会看见黑影从任务栏闪过。同一个软件推出不同的版本,使用户各取所需,也算是脚本技术的发扬。兄能感兴趣我太高兴了,你是我能想到的最好人选。如果 VBS 版做好了批处理版也可以渐渐淡出了,兄没有时间也不要紧,其它朋友也可以尝试一下。任何人可以使用 SendTo+ 所有资源,如果有那么一个软件出来的话,只需表明借鉴自咱们论坛我已经很高兴了。
Re electronixtar
我可能比你更想加入这个功能,sort 不能实现自然数字的排序,GNU sort 倒是可以实现但必须指定字符位置,在文件名未知的情况下这是不太可能实现的,可行的办法是预定义一些规则弹出文本编辑器让用户修改后合并,但这样太不方便了,不如可视化的软件来的顺手。
|
☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul
|
|
2006-10-2 11:47 |
|
|
cxmzlxb
新手上路
积分 17
发帖 13
注册 2006-9-6
状态 离线
|
『第
12 楼』:
想看源代码学习一下,无奈楼主做了加密,能不能给把文件夹下所有文件命名为01.*,02.*这样的代码,无论文件名是什么,不改扩展名,改扩展名的也给一个,要两两个,要源码!
|
|
2006-10-2 22:29 |
|
|
notiger
新手上路
积分 4
发帖 3
注册 2006-9-27
状态 离线
|
|
2006-10-2 23:17 |
|
|
无奈何
荣誉版主
积分 1338
发帖 356
注册 2005-7-15
状态 离线
|
『第
14 楼』:
Re cxmzlxb
关于加密已经说明并且很简单,参看一下提供的加密原理的帖子很容易就得到源码了。过一段时间等这一版本稳定了,再添加一个交互界面的批量重命名的功能,初步想能指定序号位数命名、字符替换什么的。
Re all
我在别处见到转贴让我哭笑不得,我已说过加密不是提防看到源码。
麻烦转贴的朋友能不能将 “帮助” 部分全转过去。
[ Last edited by 无奈何 on 2006-10-3 at 05:17 ]
|
☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul
|
|
2006-10-3 00:31 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
15 楼』:
斑竹对注册表研究的很深,呵呵,动态显示选择提示这个我好好看看
[ Last edited by he200377 on 2006-10-3 at 08:07 ]
|
|
2006-10-3 07:56 |
|
|