【教程】Batch Primer Primer(批处理入门教程)
bat吧
全部回复
仅看楼主
level 14
首发:bat吧
作者:aiwozhonghuaba
转载请注明版权
做本吧第一个完整的入门入门教程~[滑稽]趁着新概念还没开更
当然了,身为入门入门教程,
不会太详细,教程带进门,修行靠个人
不常用命令就不会涉及到了,
对命令的解说将会比较片面,不会深入
PS 这是一篇
枯燥的教程,贫乏的文科成绩导致了几个部分没有任何衔接....跟看字典似的...但这是有图版的字典...
(谁改天再来个Batch Primer Plus)
Win+R输入cmd并回车,就打开了cmd
REGEDIT4
[HKEY_CLASSES_ROOT\.bat\ShellNew]
"NullFile"=""
将以上文字保存为"注册.reg"
并双击执行,你的右键就会多出"新建 Windows批处理文件"
这是批处理编写工具iBAT的下载地址:htt[太开心]p://iba[太开心]t.codeeer.co[太开心]m/
2015年04月06日 03点04分 1
level 14
二楼备用
2015年04月06日 03点04分 2
level 14
md
创建目录
  用法:md 目录
  例:
    md test
    在当前目录下创建文件夹"test"
  例:
    md "D:\Program Files\Batch"
    会在"D:\Program Files\"下创建文件夹"Batch"
需要注意的是,带空格的字符串需要用引号包裹!!!
例:
    md D:\Program Files\Batch
    在D盘建立"Program"文件夹
    再在当前目录下建立"Files","Files"里面建立"Batch"(md支持一次性建立多级目录)
2015年04月06日 03点04分 10
单引还是双引?
2015年04月09日 14点04分
回复
����è1
:双引号
2015年04月09日 14点04分
level 14
rd
删除目录
  用法:rd 目录
  和md的用法相似,只不过要把"创建"改成"删除"
开关:
    /s /q 安静删除子目录
    单独的rd无法删除非空目录
    例:
      rd /s /q 目录
      再提醒一遍目录有空格不要忘了引号
2015年04月06日 03点04分 11
level 14
del
删除文件
  用法:del [开关] 文件
  基础的用法和其余命令差不多
  例:
    del *.txt
    删除当前目录下的txt
  例:
    del D:\test.txt
开关:
    /s /q 深入子目录
      例:
        del /s /q *.txt
        删除当前目录包括子目录下的txt
2015年04月06日 03点04分 12
level 14
ren
重命名文件或文件夹
  用法:ren 源文件 新文件名(不能带路径哦)
  例:
    ren D:\2015.log 2015-4-4.log
    将"D:\2015.log"改名为"2015-4-4.log"
  例:
    ren *.txt *.log
    将当前文件下所有的txt文件改为log文件
2015年04月06日 04点04分 14
level 14
move
移动文件并重命名文件和目录
  用法:move 源文件 目标
  例:
    move E:\test\test.txt G:\New.txt
    将"E:\test\test.txt"移动到G:并改名New.txt
例:
    move E:\test tests
    将"E:\test"改名"tests"
开关:
    /y 直接覆盖
    与copy的/y开关相同
2015年04月06日 04点04分 15
level 14
start
启动一个单独的窗口运行指定的程序或命令
  用法:start "路径"
  例:
    start "D:\Program Files\Tencent\Bin\QQ.exe"
    启动"D:\Program Files\Tencent\Bin\QQ.exe"
开关:
    /min 最小化启动
    /max 最大化启动
  例:
    start /min "D:\Program Files\Tencent\Bin\QQ.exe"
    最小化启动"D:\Program Files\Tencent\Bin\QQ.exe"
2015年04月06日 04点04分 21
level 15
a神泥壕w不讲bat语法之类的话这样不就是字典之类的东西了么w
2015年04月06日 04点04分 23
level 14
if
条件判断
  (1)字符串比较
    用法:if xxx 比较符 xxx 命令
    例:
      if
"%choice%"=="Y" echo yes
当变量choice的值为"Y"的时候输出yes
      choice在这里被%包裹,表示它是一个变量
例:
      if 50 gtr 100 echo 50^>100
如果50大于100输出"500>100"
      在这里数字没有被引号包裹,表示作为数字而不是字符串比较
      ^>表示将>作为一个普通符号处理
例:
  
    if "%str: =%" neq "" (
        echo %str%中没有空格
        pause
      )
%str: =% 将str中的空格替换为空
比较运算符(英语好的同学应该记起来很容易):
      equ 等于
      neq 不等于
      lss 小于
      leq 小于等于
      gtr 大于
      geq 大于等于
(2)文件存在与否
    用法:if exist 文件 命令
    例:
     
 if exist D:\Windows echo 存在D:\windows
(3)变量是否定义
    用法:if defined 变量名 命令
    例:
      if defined str (
        echo 变量str已定义,值为%str%
        set str=
      ) else (
        echo 变量str未定义
      )
开关:
    not 当条件不成立时执行后面的命令
      例:
      
  if not exist test.txt echo 不存在test.txt
/i 不区分大小写
      例:
       
 if /i "abcd"=="aBCd" echo 两个字符串相等
2015年04月06日 04点04分 24
例: if 50 gtr 100 echo 50^>100 如果50大于100输出"500>100" 后面的500,是不是50?[疑问]
2015年05月11日 08点05分
回复
��������
:是的,感谢指正
2015年05月11日 09点05分
level 14
call
调用另一个批处理程序或标签
  用法: call 批处理|标签
  与goto的不同在于,
  call调用标签执行完毕后会返回,一般我们在需要返回的地方加上"goto :eof"来返回
  调用调用批处理同样也是遇到"goto :eof"则返回
例:
    @echo off
    echo 1
    call :label
    echo 2
    echo 3
    :label
    echo 4
    echo 5
    goto :eof
    输出结果为:
      1
      4
      5
      2
      3
call相对goto的优势除了可以返回以外,还有一点——可以传参
  例:
    @echo off
    call :print "1" "2" "3"
    pause&exit
    :print
    echo %~1 %~2 %~3
    %~1代表传过去的第一个参数
    %~2代表传过去的第二个参数
    %*代表传过去的所有参数
    可能大家发现了,本代码后面没有"goto :eof"
    事实上,如果没有goto :oef的话,批处理就会一直执行到结束再返回
PS %0一般表示批处理自身路径
2015年04月06日 04点04分 26
更正:在echo 3后面应该有一行Pause&Exit;;感谢@快乐1heaven 的指正
2015年04月06日 09点04分
pause&exit这里的作用是啥
2015年05月17日 07点05分
回复
sky��������789
:暂停后退出,防止继续往下执行
2015年05月17日 13点05分
不加结果不是一样的吗
2015年05月19日 12点05分
level 14
type
显示文本文件的内容
  用法:type 文件
  例:
   
 type *.txt >>Total.txt
    显示当前目录下所有txt文件的内容,并且追加到Total.txt的末尾
more
逐屏显示输出
  用法:more +n 文件
  +n代表忽略前n行
  与type的不同在于它会每次显示满一个屏幕就暂停
  例:
    more +10 1.rxr
    显示1.rxr除前十行的内容
  例:
  
  systeminfo|more
    systeminfo会显示系统信息,不过它显示地很多...我们看不过来
    因此在这里用
|(管道符号)把输出传递给more,利用more分屏输出的特性方便阅读
2015年04月06日 05点04分 30
PS more分屏输出适用于cmd,不适用于批处理
2015年04月06日 05点04分
rxr是什么?应该是txt吧
2015年07月06日 03点07分
level 14
sort
排序
  用法:sort [/+n] 文件
  /+n代表从每行的第n个字符开始排序
  注意:这个排序不是按照数值大小排序!
  例:
    ipconfig|sort
    将ipconfigd的执行结果排序
  例:
    sort /+2 1.txt
    排序1.txt并显示,从每行第二个字符开始比较
    如
      1234
      5213
      5654
      2176
    排序后
      2176
      5213
      1234
      5654
2015年04月06日 05点04分 32
level 14
logoff
注销
  用法:logoff
shutdown
注销/关机/重启
  用法:shutdown [开关]
  开关:
    /i 显示图形界面
    /l 注销
    /s 关机
    /r 重启
    /t xxx 倒计时xxx秒
    /c "注释" 关机时的注释
    /f 强制
  例:
    shutdown -f -s -t 3600
    倒计时3600s后强制关机
2015年04月06日 05点04分 34
还有/a
2015年07月06日 03点07分
level 14
看完这篇教程...并且熟练掌握了其中的内容
那么你的批处理已经入门了,只是入门...[滑稽]
批处理有些古怪的特性只有在实践中才能发现
才能发现它们奇怪但十分有用的用法[喷]
就算你知道:
怎么用管道传递错误输出
for /f怎么用"当成分隔符
setlocal的最大递归层是多少
批处理脚本的最大递归层是多少
批处理环境变量的极限
%=C:%
%=ExitCode%
%=ExitCodeAscii%
%FirmWare_Type%
%__AppDir__%
等等奇怪的变量[狂汗]
我们都离高手...仍然还很远...
我正站在小山丘上仰望正在攀登珠穆朗玛的
真·大神们(啊,我看见了bathome登山团[惊哭])
2015年04月06日 05点04分 35
level 14
终于翻页了[狂汗]
@tmxk0411 @超人硬汉 都懂的[滑稽]
2015年04月06日 05点04分 36
懂什么[滑稽]
2015年04月06日 05点04分
回复
����Ӳ��
:[滑稽]我还以为要等好几天你才会来;;当然是帖子管理-第三项[滑稽]
2015年04月06日 05点04分
@aiwozhonghuaba 想得到美[滑稽][滑稽]
2015年04月08日 08点04分
回复
����Ӳ��
:[滑稽]
2015年04月08日 14点04分
level 11
毅力帝
ps:%=C:%是啥
2015年04月06日 05点04分 37
隐藏地很深的动态变量之一,键入"set ;"可以查看到它们
2015年04月06日 06点04分
回复 aiwozhonghuaba :变量不是不能含有=吗?
2015年04月06日 06点04分
@buckle2000 可以啊...只是扩展起来有点奇怪而已;set str=str=5,%str%和%str=str%都扩展...
2015年04月06日 06点04分
level 11
真·完整
2015年04月06日 05点04分 38
level 6
恭候已久的大神终于新出教程了。
for /l %%i in (1 1 32) do md 赞%%i
2015年04月06日 06点04分 39
我不是大神...
2015年04月06日 06点04分
level 13
后排支持!另:我也是理科生......
2015年04月06日 09点04分 41
同是理科生差距咋这么大[狂汗]我感觉我丝毫没有文学细胞
2015年04月06日 09点04分
1 2 3 尾页