中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]新人请教——“批量修改后缀名.bat”的完善
作者:
标题: [求助]新人请教——“批量修改后缀名.bat”的完善 上一主题 | 下一主题
lujice
新手上路





积分 12
发帖 13
注册 2010-3-3
状态 离线
『楼 主』:  [求助]新人请教——“批量修改后缀名.bat”的完善

代码如下:

@echo off
:0
cls
echo.
echo.                    ╭────────╮
echo.          ╭────┤  使 用  说 明  ├────╮
echo.          │        ╰────────╯        │
echo.          │                                    │
echo.          │   1、本工具的用途是——把指定目录  │
echo.          │      里,某类指定后缀名的文件,批  │
echo.          │      量的修改为其它指定的后缀名。  │
echo.          │                                    │
echo.          │   2、每一步输入完毕,都请敲回车!  │
echo.          │                                    │
echo.          │   3、注意——只输入后缀名,不要    │
echo.          │      输入后缀名前的“.”           │
echo.          │                                    │
echo.          │   4、文件夹的路径中如有空格和特殊  │
echo.          │      字符,请手打输入,不要拖放!  │
echo.          │                                    │
echo.          ╰──────────────────╯
echo.&echo           请输入文件夹的路径,或拖放文件夹到本窗口
set LJ=
set /p LJ=
if /i "%LJ%"=="" goto 0
echo.&echo         请输入修改前的后缀名:
set q=
set /p q=
if /i "%q%"=="" goto 0
echo.&echo          请输入修改后的后缀名:
set h=
set /p h=
if /i "%h%"=="" goto 0
cd %LJ%
REN *.%q% *.%h%
echo.&echo.           后缀名已批量修改成功!
echo.&echo.           请打开文件夹看看吧!
start %LJ%
pause
goto 0

    这个批处理是我的原创,基本是成功的。

    问题是——
    1、当文件夹的路径中有空格和特殊字符时,怎么支持拖放?
    2、如想同时处理文件夹下所有的子目录时,又该怎么写?
    3、为了避免被搜索发现,我还想更进一步:“在批量修改后缀名的同时,批量修改文件名”。
         即——在文件名的第一个字符和第二个字符中间,加个数字1。
         这又该怎么写?
    4、比如,我把“C:\WINDOWS\system32”下,所有的“*.cpl”文件,都改为“后缀名全部统一改为bbb,文件名的第一个字符和第二个字符的中间,则加个数字1”。
         这种情况,用批处理恢复原来的文件名和后缀,又该怎么写?

      盼高手解答!!

      预先感谢了!!!

      顿首......

2011-1-21 14:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lujice
新手上路





积分 12
发帖 13
注册 2010-3-3
状态 离线
『第 2 楼』:  

这个批处理如果用来"禁止使用控制面板",那效果比网上流传的代码,不知好多少......

呵呵呵......

2011-1-21 14:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 3 楼』:  

改cpl扩展名和禁止使用控制面板是两回事
该不能处理的敏感字符依旧不能处理:支持拖放、支持双击、支持过滤、支持拖放时文件与目录混合
@echo off
rem 设置源扩展名
set x0=.bat
rem 设置目标扩展名
set x1=.cmd
rem 设置插入字符
set c=1
echo 开始
if "%~1"=="" (
        set m=1
        goto:b
)
:a
set "a=%~a1"
if "%a:~0,1%"=="-" set d==
if defined d (
if /i "%~x1"=="%x0%" (
        set "a=%~n1%x1%"
        setlocal enabledelayedexpansion
        ren "%~1" "!a:~0,1!%c%!a:~1!"
        endlocal
) else echo 未处理;"%~1"
)
:b
if not defined m set n="%~1\"
if not defined d for /r %n% %%a in (*) do if /i "%%~xa"=="%x0%" (
        set "a=%%~na%x1%"
        setlocal enabledelayedexpansion
        ren "%%a" "!a:~0,1!%c%!a:~1!"
        endlocal
) else echo 未处理;"%%a"
if defined m goto:end
shift
set d=
if not "%~1"=="" goto:a
:end
echo;完成
pause
[ Last edited by Hanyeguxing on 2011-1-21 at 17:00 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2011-1-21 16:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lujice
新手上路





积分 12
发帖 13
注册 2010-3-3
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by Hanyeguxing at 2011-1-21 16:35:
改cpl扩展名和禁止使用控制面板是两回事
该不能处理的敏感字符依旧不能处理:[code]@echo off
rem 设置源扩展名
set x0=.bat
rem 设置目标扩展名
set x1=.c ...

1、首先,谢谢!!

2、我试验过,把“C:\WINDOWS\system32”下,所有的“*.cpl”文件,后缀名都改为bbb后,任何控制面板项目,都不能使用!

3、网上流传的,通过修改注册表来禁止控制面板的方法,有的机子无效。比如我本人的机子。

4、最难的是——如何用批处理改回来,您有好的代码吗?

5、还有,您的代码不能打包为exe后,交给菜鸟使用。而我的代码可以

[ Last edited by lujice on 2011-1-21 at 16:45 ]

2011-1-21 16:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 5 楼』:  

1,没事把bat打包成exe干什么?
2,给你写的示例,难道你还要照抄?

[ Last edited by Hanyeguxing on 2011-1-21 at 17:04 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2011-1-21 16:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xyz1234111
初级用户





积分 32
发帖 32
注册 2010-10-29
状态 离线
『第 6 楼』:  

学习了
说个题外话啊!
寒夜兄,你的这个当爱和恨捆绑的这个图片的效果能用批处理做出来么?
如果能,能不能给个代码看看

2011-1-21 20:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lujice
新手上路





积分 12
发帖 13
注册 2010-3-3
状态 离线
『第 7 楼』:  

奇怪!
建立回收站怎么又支持空格、和特殊字符?


@echo off
:0
cls
echo.
echo.               ╭────────╮
echo.     ╭────┤  使 用 说 明   ├────╮
echo.     │        ╰────────╯        │
echo.     │                                    │
echo.     │   1、本工具的用途是——在指定目录  │
echo.     │      里,建立回收站。              │
echo.     │                                    │
echo.     │   2、每一步输入完毕,都请敲回车!  │
echo.     │                                    │
echo.     │   3、支持文件夹的名字和路径中含有  │
echo.     │      空格和特殊字符!              │
echo.     │                                    │
echo.     │   3、手打输入文件夹的名字和路径、  │
echo.     │      和回收站的名字时,请在前后    │
echo.     │      加上英文的双引号—— "        │
echo.     │                                    │
echo.     ╰──────────────────╯
echo.&echo      请输入文件夹的路径,或拖放文件夹到本窗口
set mulu=
set /p mulu=
echo.&echo         请输入回收站的名字:
set /p minzi=
md %mulu%\%minzi%>nul 2>nul
attrib +s +h %mulu%\%minzi%>nul 2>nul
(echo [.ShellClassInfo]
echo CLSID={645FF040-5081-101B-9F08-00AA002F954E})>%mulu%\%minzi%\desktop.ini
attrib +s +h %mulu%\%minzi%\desktop.ini
echo.&echo.         回收站已建立成功!
echo.&echo.         手工打开看看吧!
echo.
pause
goto 0

2011-1-22 15:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: