无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3621|回复: 8
打印 上一主题 下一主题

分享一个bat工具箱,主要检查bug

[复制链接]
跳转到指定楼层
1#
发表于 2013-2-3 12:54:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
废话不多说
上代码:
@echo off
title 文件操作向导
:menu
set mingling=H
echo 1.新建文件或夹
echo 2.删除文件或夹
echo 3.命名文件或夹
echo 4.打开文件或夹
echo 5.复制文件或夹
echo 6.移动文件或夹
echo 7.自定义的命令
echo Q.退出
echo H.关于信息
echo 处理多个文件或夹时用空格隔开
set /p mingling=请输入命令:
cls
if /i %mingling% equ 1 goto 1
if /i %mingling% equ 2 goto 2
if /i %mingling% equ 3 goto 3
if /i %mingling% equ 4 goto 4
if /i %mingling% equ 5 goto 5
if /i %mingling% equ 6 goto 6
if /i %mingling% equ H goto H
if /i %mingling% equ Q exit
:H
echo 作者:邱江坤
echo 邮箱:956269867@qq.com
echo 从上可以看出我的QQ了吧
pause
cls
goto menu
:1
echo 创建文件,输入1
echo 创建文件夹,输入2
set /p mingling=请输入命令:
cls
if /i %mingling% equ 1 goto 11
if /i %mingling% equ 2 goto 12
:11
set /p name=请输入文件名,包括扩展名:
set /p mulu=请把文件或夹拖到这里,或直接输入完整路径:
set /p 0=请输入内容:
set /p 1=请输入内容:
set /p 2=请输入内容:
set /p 3=请输入内容:
set /p 4=请输入内容:
set /p 5=请输入内容:
set /p 6=请输入内容:
set /p 7=请输入内容:
echo %0%>>"%mulu%\%name%"
echo %1%>>"%mulu%\%name%"
echo %2%>>"%mulu%\%name%"
echo %3%>>"%mulu%\%name%"
echo %4%>>"%mulu%\%name%"
echo %5%>>"%mulu%\%name%"
echo %6%>>"%mulu%\%name%"
echo %7%>>"%mulu%\%name%"
goto OK
:12
set /p name=请输入文件夹名:
set /p mulu=请把文件或夹拖到这里,或直接输入完整路径:
if /i %mulu% equ 1 goto 121
md "%mulu%"\"%name%"
goto OK
:2
set /p name=请把文件或夹拖到这里,或直接输入完整路径:
del /f /q "%name%"
echo 找不到文件有三个原因
echo 一、你忘了加空格
echo 二、文件已被删除
echo 三、压根没有文件
echo -----(^^_^^)-----
rd /s /q "%name%"
goto OK
:3
set /p thename=请把文件或夹拖到这里,或直接输入完整路径:
set /p name=请输入新文件名:
ren "%thename%" "%name%"
goto OK
:4
set /p name=请把文件或夹拖到这里,或直接输入完整路径:
set /p start=要用什么打开,或直接ENTER:
for /f %%i in "%name%" do start "%start%" "%name%"||for /f %%i in %name% do start "" "%name%"
goto OK
:5
set /p name=请把文件或夹拖到这里,或直接输入完整路径:
set /p mulu=请把文件目录拖到这里,或直接输入完整路径:
set /p mingling=只把文件夹内的复制跳过,连同文件夹键入5E:
if /i %mingling% equ 5E goto 5E
xcopy "%name%" "%mulu%" /c
:5E
xcopy "%name%" "%mulu%" /e /c
goto OK
:6
set /p name=请把文件或夹拖到这里,或直接输入完整路径:
set /p mulu=请把文件目录拖到这里,或直接输入完整路径:
move "%name%" "%mulu%"
goto OK
:7
set /p 0=请输入命令(变量0-7不能用):
set /p 1=请输入命令(变量0-7不能用):
set /p 2=请输入命令(变量0-7不能用):
set /p 3=请输入命令(变量0-7不能用):
set /p 4=请输入命令(变量0-7不能用):
set /p 5=请输入命令(变量0-7不能用):
set /p 6=请输入命令(变量0-7不能用):
set /p 7=请输入命令(变量0-7不能用):
%0%
%1%
%2%
%3%
%4%
%5%
%6%
%7%
goto OK
:OK
echo 成功
pause
start "" %0"
exit
未经太多测试
存在bug
但功能都正常
昨天删文件夹“E:\batch\123 \”差点把E盘删了
2#
 楼主| 发表于 2013-2-3 12:55:53 | 只看该作者
写了几天。。。
不过有几个星期没上了
回复

使用道具 举报

3#
发表于 2013-2-3 20:22:43 | 只看该作者
1."处理多个文件或夹时用空格隔开",没考虑文件或文件夹本身含空格的情况。

2.echo %0%>>"%mulu%\%name%",不能以纯数字或数字打头的字串作为变量名,这是常识。

3.for /f %%i in "%name%" do ... 没这种用法。应该是 for /f "delims=" %%i in ("%name%") do ...

4.move "%name%" "%mulu%"  如果文件或文件夹本身含空格,"%name%"岂不被两层引号包裹?通常的做法:move "%name:"=%" "%mulu:"=%\"
回复

使用道具 举报

4#
 楼主| 发表于 2013-2-4 16:28:19 | 只看该作者
通常的做法:move "%name:"=%" "%mulu:"=%\"
这不是六个个“引号”了吗
%name%旁两个,=%后一个
%mulu%旁两个,=%后一个
回复

使用道具 举报

5#
 楼主| 发表于 2013-2-4 16:30:53 | 只看该作者
1."处理多个文件或夹时用空格隔开",没考虑文件或文件夹本身含空格的情况。
那怎么办
如果处理非法文件名怎么弄
非要cd “%mulu%”
md ”%name%“
我发现我可以上传附件了

[ 本帖最后由 2013qjk 于 2013-2-4 16:33 编辑 ]
回复

使用道具 举报

6#
 楼主| 发表于 2013-2-4 16:47:36 | 只看该作者
本帖最后由 2013qjk 于 2014-1-6 20:32 编辑

根据@pznpt的建议,修改过的代码如下
@echo off
title 文件操作向导
:menu
set mingling=H
echo 1.新建文件或夹
echo 2.删除文件或夹
echo 3.命名文件或夹
echo 4.打开文件或夹
echo 5.复制文件或夹
echo 6.移动文件或夹
echo 7.自定义的命令
echo Q.退出
echo H.关于信息
echo 处理多个文件或夹时用空格隔开
set /p mingling=请输入命令:
cls
if /i %mingling% equ 1 goto 1
if /i %mingling% equ 2 goto 2
if /i %mingling% equ 3 goto 3
if /i %mingling% equ 4 goto 4
if /i %mingling% equ 5 goto 5
if /i %mingling% equ 6 goto 6
if /i %mingling% equ H goto H
if /i %mingling% equ Q exit
:H
echo 作者:邱江坤
echo 邮箱:956269867@qq.com
echo 从上可以看出我的QQ了吧
pause
cls
goto menu
:1
echo 创建文件,输入1
echo 创建文件夹,输入2
set /p mingling=请输入命令:
cls
if /i %mingling% equ 1 goto 11
if /i %mingling% equ 2 goto 12
:11
set /p name=请输入文件名,包括扩展名:
set /p mulu=请把目录拖到这里,或直接输入完整路径:
set /p 0=请输入内容:
set /p 1=请输入内容:
set /p 2=请输入内容:
set /p 3=请输入内容:
set /p 4=请输入内容:
set /p 5=请输入内容:
set /p 6=请输入内容:
set /p 7=请输入内容:
cd "%mulu:"=%"
echo %a%>>"%name:"=%"
echo %b%>>"%name:"=%"
echo %c%>>"%name:"=%"
echo %d%>>"%name:"=%"
echo %e%>>"%name:"=%"
echo %f%>>"%name:"=%"
echo %g%>>"%name:"=%"
echo %h%>>"%name:"=%"
goto OK
:12
set /p name=请输入文件夹名:
set /p mulu=请把生成文件夹拖到这里,或直接输入完整路径:
if /i %mulu% equ 1 goto 121
cd "%mulu:"=%"
md "%name:"=%"
goto OK
:2
set /p name=请把文件或夹拖到这里,或直接输入完整路径:
del /f /q "%name:"=%"
echo 找不到文件有三个原因
echo 一、你忘了加空格
echo 二、文件已被删除
echo 三、压根没有文件
echo -----(^^_^^)-----
rd /s /q "%name:"=%"
goto OK
:3
set /p thename=请把文件或夹拖到这里,或直接输入完整路径:
set /p name=请输入新文件名:
ren "%thename:"=%" "%name:"=%"
goto OK
:4
set /p name=请把文件或夹拖到这里,或直接输入完整路径:
set /p start=要用什么打开,或直接ENTER:
for /f "delims=" %%i in ("%name:"=%") do start "%start:"=%" "%name:"=%"||for /f "delims=" %%i in ("%name:"=%") do start "" "%name:"=%"
goto OK
:5
set /p name=请把文件或夹拖到这里,或直接输入完整路径:
set /p mulu=请把文件目录拖到这里,或直接输入完整路径:
set /p mingling=只把文件夹内的复制跳过,连同文件夹键入5E:
if /i %mingling% equ 5E goto 5E
xcopy "%name:"=%" "%mulu:"=%" /c
:5E
xcopy "%name:"=%" "%mulu%"=%" /e /c
goto OK
:6
set /p name=请把文件或夹拖到这里,或直接输入完整路径:
set /p mulu=请把文件目录拖到这里,或直接输入完整路径:
move "%name:"=%" "%mulu%"
goto OK
:7
set /p a=请输入命令(变量0-7不能用):
set /p b=请输入命令(变量0-7不能用):
set /p c=请输入命令(变量0-7不能用):
set /p d=请输入命令(变量0-7不能用):
set /p e=请输入命令(变量0-7不能用):
set /p f=请输入命令(变量0-7不能用):
set /p g=请输入命令(变量0-7不能用):
set /p h=请输入命令(变量0-7不能用):
%a%
%b%
%c%
%d%
%e%
%f%
%g%
%h%
:OK
echo 成功
pause
start "" %0"
exit

[ 本帖最后由 2013qjk 于 2013-2-4 16:48 编辑 ]
回复

使用道具 举报

7#
发表于 2013-2-4 20:53:44 | 只看该作者

回复 #6 2013qjk 的帖子

亲,,,
set /p 0=输入:
echo %0%
pause
运行试试什么情况?
因为%0~%9解析优先级高于%0%,将%0%解析成%0了,回显的是批处理文件自身。将set /p 中的0改成其它,如.0,_0,#0等等都成。
Good Luck
回复

使用道具 举报

8#
发表于 2013-2-4 22:11:08 | 只看该作者

回复 #7 pznpt 的帖子

又见到大师,先提前祝新年快乐!

经常看到大师精美的命令语句,令人赏心悦目,盼望以后更多精彩!

[ 本帖最后由 2011xiaobing 于 2013-2-4 22:15 编辑 ]
回复

使用道具 举报

9#
 楼主| 发表于 2013-3-14 12:34:25 | 只看该作者
几个月没上了。。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-17 05:53

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表