中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-08 12:17
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 【求助】右键添加“以首行字符重命名此文件” 查看 2,126 回复 17
楼 主 【求助】右键添加“以首行字符重命名此文件” 发表于 2008-05-11 07:24 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
如题;
由于常在网上copy。粘贴,每次保存时时还要右键重名一下文件,烦了
这类文件都是些文本文件,如
.txt
.htm
.html
1.现在让注册表给右键添加个这个功能,不知键值在哪。。。?
2.对于htm文件会难度较大,因为不是ascii码字符,源文件还有许多<>/\类字符,不知用sed。。。怎么处理?
为方便大家解答,我假定这些文件行首都为合法字符,


(参考5楼hat的代码)答案如下:(可过滤非法字符,可以根据自己需要对代码修改)
假定你的bat1环境变量值为C:\mybat\myrename.bat(自己配)
@echo off
<%0 more +5>C:\mybat\myren.bat
reg add HKEY_CLASSES_ROOT\*\shell\MyRename\command /ve /t REG_SZ /d "cmd.exe /c call %bat1% %%1" /f>nul
exit

@echo off
for %%a in (%1)do call:renm "%%~dpna" %%~xa
:renm
set/p t=<"%~1%2"
set t=%t:.=%
set t=%t:/=%
set t=%t:\=%
set t=%t:?=%
set t=%t::=%
set t=%t:;=%
set t=%t:^*=%
set "t=%t:^<=%"
set "t=%t:^>=%"
set "t=%t:^|=%"
::超多同名文件可以循环重命名,但代码长了
ren "%~1%2" "%t%%2"||ren "%~1%2" "%t%_1%2"||ren "%~1%2" "%t%_2%2"||(echo err&pause)
exit


http://www.cn-dos.net/forum/viewthread.php?tid=40212

感谢!加分!

[ Last edited by plp626 on 2008-5-12 at 10:31 AM ]
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2 发表于 2008-05-11 10:18 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
3 发表于 2008-05-11 10:28 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
inf:

Signature="$Chicago$"


DefaultDestDir=12,"web"


AddReg=SearchText_AddReg,ForUnInstall
CopyFiles=SearchText_CopyFiles


DelReg=SearchText_AddReg,ForUnInstall
DelFiles=SearchText_CopyFiles


SaveText.inf
SaveText.html


HKCU,"Software\Microsoft\Internet Explorer\MenuExt\保存内容(&S)",,0x00000000,"%12%\web\SaveText.html"
HKCU,"Software\Microsoft\Internet Explorer\MenuExt\保存内容(&S)","contexts",0x00010001,50


HKLM,%RegPath%,"DisplayName",,"SaveText By Slore"
HKLM,%RegPath%,"HelpLink",,"bbs.cn-dos.net"
HKLM,%RegPath%,"Publisher",,"Slore"
HKLM,%RegPath%,"UninstallString",0x00000000,"%UnistallStr%%12%\Web\SaveText.inf,DefaultUninstall,5"


RegPath="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\SaveText"
UnistallStr="RunDll32 advpack.dll,LaunchINFSection "

;;;;;;;--------------------------------------------
;-- Only localize strings below this line
;-- This SearchText Setup Inf Made By SLore
;;;;;;---------------------------------------------


能否讲下代码流程。。。
还有,安装了,不会用,右键没变化。。。
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
4 发表于 2008-05-11 10:35 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
右键,安装……

需要重新启动IE

然后你选段文件右键……看看
5 发表于 2008-05-11 10:56 ·  中国 上海 联通
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
我试着写了一下,成功过一次,可是代码被我改了,又不成功了,关键就是写注册表的那句,实在不记得该怎样写了。哪位能帮我改改?

@echo off
set DstDir=C:\test\test.bat
>"%DstDir%" type nul
>>"%DstDir%" (
echo @echo off
echo set /p fname=^<"%%1"
echo ren "%%1" "%%fname%%%%~x1"
)
reg add HKEY_CLASSES_ROOT\*\shell\MyRename\shell /ve /t REG_SZ /d "cmd.exe /c call \"%DstDir%\" %%1" /f>nul


正确的代码如下:
@echo off
set DstDir=C:\test\test.bat
>"%DstDir%" type nul
>>"%DstDir%" (
echo @echo off
echo set /p fname=^<"%%1"
echo ren "%%1" "%%fname%%%%~x1"
)
reg add HKEY_CLASSES_ROOT\*\shell\MyRename\command /ve /t REG_SZ /d "cmd.exe /c call \"%DstDir%\" %%1" /f>nul


[ Last edited by HAT on 2008-5-11 at 01:20 PM ]
6 发表于 2008-05-11 11:12 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
::下面这句省略就是按项名为右键菜单名
reg add HKEY_CLASSES_ROOT\*\shell\MyRename\ /ve /d "右键菜单名" /f
reg add HKEY_CLASSES_ROOT\*\shell\MyRename\command /ve /t REG_SZ /d "cmd.exe /c call \"%DstDir%\" %%1" /f
7 发表于 2008-05-11 11:16 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
slore 网页内容右键保存 2008-5-11 更新 修正unicode无法保存错误 1kB 2008/05/11(Sun)11:45 SaveText By Slore.rar

http://upload.cn-dos.net/img/381.rar

刚才测试发现论坛上面的»无法保存……
就改了下……

现在自动识别了。
也就是说:

如果你选的内容有unicode字符则保存文本为unicode,
如果没有就是默认的,一般是ANSI编码。
8 发表于 2008-05-11 13:19 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
汗水,原来是误把command写成了shell,值了一晚上夜班,大脑缺氧啦^_^
多谢 slore 兄
9 发表于 2008-05-11 13:58 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
Originally posted by slore at 2008-5-11 11:16 AM:
slore 网页内容右键保存 2008-5-11 更新 修正unicode无法保存错误 1kB 2008/05/11(Sun)11:45 SaveText By Slore.rar

http://upload.cn-dos.net/ ... 两个代码都是:
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
10 发表于 2008-05-11 14:14 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
XP SP2下测试通过……
11 发表于 2008-05-11 14:19 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
Set objDlg = CreateObject("MSComDlg.CommonDialog")

这个调用保存对话框……

如果你不能用这个对象……只能保存到固定路径了……
12 发表于 2008-05-11 14:23 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
如果你的不支持,就在把FSO的path改改,把DLG对象去掉
13 发表于 2008-05-11 14:35 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
实在想交互点,可以用inputbox
14 发表于 2008-05-12 11:45 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
若首行字符含有%,“一楼的这代码,提示符就会显示找不到文件。。。
大家看看。。。。%真让我头痛。。。
@echo off
<%0 more +5>C:\mybat\myren.bat
reg add HKEY_CLASSES_ROOT\*\shell\MyRename\command /ve /t REG_SZ /d "cmd.exe /c call %bat1% %%1" /f>nul
exit

@echo off
for %%a in (%1)do call:renm "%%~dpna" %%~xa
:renm
set/p t=<"%~1%2"
set t=%t:.=%
set t=%t:/=%
set t=%t:\=%
set t=%t:?=%
set t=%t::=%
set t=%t:;=%
set t=%t:^*=%
set "t=%t:^<=%"
set "t=%t:^>=%"
set "t=%t:^|=%"
::超多同名文件可以循环重命名,但代码长了
ren "%~1%2" "%t%%2"||ren "%~1%2" "%t%_1%2"||ren "%~1%2" "%t%_2%2"||(echo err&pause)
exit
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
15 发表于 2008-05-12 13:26 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
我的从网页上直接保存的你用不了的话。要右键的那个……

FSO读文本一行你会吧?
然后给你说个replace函数……
论坛跳转: