标题: bat新手入门帖 [打印本页]
作者: jakorzhang 时间: 2012-10-8 14:36 标题: bat新手入门帖
本帖最后由 jakorzhang 于 2013-10-6 19:19 编辑
给初入bat新手的学前引导课程:
作者:jakorzhang 群名字:bat-小白
qq:1536706765欢迎交流请标明bat交流
前一段时间 偶然遇到了bat 一时兴起 开始学习相关教程 都说万事开头难 和大多数网友一样 网上的资源总是浅尝辄止或者存在一定错误引导信息的 容易让人学起来摸不着头脑 而且知识也完全没有次序和体系性可言。经过一些整理 一方面是为了自己更好的了解和学习bat批处理 另一方面也为了给一些新手参考和指导。同时希望大家及时指正我在学习过程中产生的误区。闲话不多说 直接上教程:
说起bat究竟要从什么地方开始说起呢?为了全面起见 从最基础的电脑硬件原理说起 大家知道 我们现在用的计算机大部分有几个模块构成:
cpu处理器
可以实现计算功能 里面都内置了计算机需要实现功能的指令集 来方便计算机实现各种功能。
内存
内存是为了实现目前计算机cpu的高运算能力而采用的一个临时储存设备 以实现cpu的快速高效运算。
硬盘
硬盘呢 很好说了 就是储存信息,说到底就是储存字节。
主板
主板由于和本知识联系不大 暂时省略了。
输入设备(一般是键盘)
输入设备即实现信息的输入 来供cpu进行相关操作。
输出设备(显示器)
输出设备就是为了显示了 将操作的过程以及结果显示出来 方便人的进一步操作。
其实为什么要讲这些不着边际的硬件方面的东西呢 这是为了在学习批处理的过程中 避免大家闷着头傻学 虽然想不通是否一定有必然联系 可我还是觉得有必要进行学前思想基础的奠定。这样才能不被各种各样的教程,资料带入迷途 迷失了方向。限制了你的创作能力。继续深入的学习前面的硬件知识。那么了解了这些硬件以后 我们要以一个陌生人的角度来看计算机。计算机究竟能做什么? 这时我们引入操作系统的概念——dos系统
Dos是什么?disk opreta system简称dos翻译过来就是 磁盘操作系统 在这三个名词六个汉字里 精准的解释了计算机究竟在做什么当然 现在先不讨论网络应用 随后深入学习了在说那个。磁盘操作系统,操作的对象是磁盘 磁盘上都有什么呢?我们现在引用的系统 采用的是文件 目录 磁盘的形式对字符信息进行统一管理和操作 所以 要明白。dos操作系统 无论什么再强大的命令 他的最大功能也就是对计算机上的文件进行各种操作具体进行什么操作 这由dos的创造者 制造并设定其功能 例如可以创建删除文件 目录等等。说完操作的对象在说说操作:操作上有什么特点呢?dos操作系统的操作有两个特点 单用户 单命令,所谓单用户指某一时刻只能有一个用户在执行操作系统 单命令亦然。cpu具有计算和处理指令的功能因此 当我们重新审视dos的时候 其实就是对文件,目录,磁盘这三样储存在硬盘上东西的一些操作 以及后来引入的对命令的控制以及能够实现各种功能的外部命令。至此 我们来梳理一下 dos系统提供对文件,目录,磁盘等的操作 因为实际上计算机上也就只有这些东西。此时我们先不讨论系统对电流操作产生的网络应用。
Dos系统的所有功能通过命令行来实现每一个命令都可以实现一定的功能,dos系统的所有命令分为两大类:内部命令和外部命令。什么是内部命令?内部命令是系统内存在的一些基本的 不复杂的命令 他在系统启动的时候就被加载到主内存中 等待时刻被调用。他能够实现一些基本的操作 如当前目录的转移cd命令 新建文件夹md命令等等。内存是有限的 我们总是不能把所有开发出来的功能都加载到内存里 因此我们把其他的开发出来的一些可执行程序 统称为外部命令 什么叫可执行程序?windows可以执行几种种类型的程序如:*.exe *.com *.bat 等等(在此感谢@forfiles少尉提出的质疑 win系统的可执行程序究竟有几种?关于这个的讨论我暂时没有找到十分有利的资料进行说明 再有对本文章目的意义不大 就此搁下 以后查实。)以此为后缀的正确程序都是可以被计算机执行的 用来实现特定的某个或某些功能。每个类型的程序都有他的特点 分情况视之,在dos之后的系统里 一些其他的双击可运行程序往往是 使用了文件关联 使用相应的可执行程序运行的,例如.txt文件关联到了notepad.exe程序 当双击一个.txt文件时 系统会直接调用notepad来打开txt文件。
我们再讲讲dos系统运行命令的具体过程:当一个命令经过标准输入设备(你可以理解为键盘)输入并按下回车键 都发生了什么?我对这一块的知识也只是根据一些资料自行理解的 也有模糊的地方 有待进一步完善。以我看到的资料来讲 当我们输入完命令以后 首先command这个程序会对你输入的命令进行判断 这个判断包括命令是否存在?是内部命令还是外部命令,命令的语法是否正确? 当发现这个命令并不存在时 他会返回给标准输出设备一个错误信息告诉用户 这不是一个内部或外部命令请从新键入。如何发现是一个内部命令 则内存中的相应指令传送到cpu执行命令。当你command程序发现你输入的命令并不是任何一个内部命令的时候 它首先会查找当前路径下是否有该名字的可执行程序。如没有 他第二步会检查系统设置的默认外部命令文件夹(path)里是否有你输入的命令 如果存在 这执行 不存在 返回错误信息。具体哪个文件夹是默认的外部命令文件夹 你可以右键单击我的电脑选择高级 在下面有个环境变量打开 找到系统变量里面的path 可以看到后面的值里有几个路径 这些路径就是默认的外部命令文件夹 你可以点击编辑进行修改 也可以在dos里用path命令修改或添加。从上面的过程中 我们可以看出 command其实是一个命令解释器的角色。会对你的命令进行初步过滤和检查。以免发生cpu认不出你的错误指令。那么讲到这里 你也许对命令行有了个初步的认识,随着计算机技术的发展 dos系统已经淡出人们的视线,现在的dos集成为了windows操作系统的一个程序,当你想要使用dos时,首先回到桌面,按下键盘上的win(键盘左下角向右第二个或者第三个 画着一个windows图标)键和R键。
了解了dos我们就可以正式引入bat的概念了。什么是bat?从哪里来 用来干什么?这也许是初学者往往一头雾水的地方。大部分资料往往是有什么学什么 并不对bat进行一个定性的解释。bat究竟能干什么?如何知道自己的bat学习之路到什么程度了?而不是一堆资料学到什么算什么。bat全称叫做batch 翻译一下就是非互交性的。怎么理解呢?我们知道dos操作系统是单用户单任务形式的。在操作过程中 用户需要进行命令的执行,确认,选择等操作 这可以看作是一个用户与操作系统互交性的操作。就好象双方在协商着进行。而batch非互交性就是说 单方面的执行程序。batch的应用是非常有实际意义的 他不仅能够实现用户不管不顾执行命令而且还可以进行多命令的执行!具体什么是bat呢?就是一个以.bat后缀命名的文件,新建文本文档,重命名 打上0.bat一个bat文件就建成了 只是还没有内容。可以右键文件点编辑进行编辑和修改。bat中 每一行可以看作一个命令行 命令解释器会依次的执行bat中的所有命令。那么为了彻底实现bat命令的非互交性 在dos的基础上引入了一下新的语法和功能。这就是我们在网络上经常见到的bat命令教程 像:echo pause goto if for set @ % > < : 等等。他们强化了dos功能 并实现了命令行的流程控制化,也许这句话不是很理解,无所谓,知道了强化dos的功能就好。因此我们在网上看到 bat学习内容 其实是建立在dos的基础上的。他只是使得dos命令可以一次执行多个而已 而单单的bat学习包括两大方面:1.一些bat常用的命令以及流程控制命令 如goto if for 等等 在bat中是重中之重。2.符号、变量 在bat里 有很多符号 实现各种各样的功能当然这些符号是可以在dos中使用的 因为这些功能的最终解释权归dos命令解释器。但在bat中应用更能实现他们强大的功能罢了。如管道命令| 重定向命令> 等等。
我往往是这样 想到哪里就说到哪里 大家别见怪。绕了一个大圈子 我对bat的大环境简单的解释了一下,但 回归本质 bat再华丽也只是对文件,字符,目录,磁盘和网络功能的一些操作罢了在学习bat命令的过程中 我们要牢牢记住 一个命令 究竟能做什么?对谁操作?我们发现bat命令有下列几类 1.对字符,文件,目录,磁盘进行读写修改等 2.对命令行流程的控制 控制命令行的执行这里面主要还是符号的作用大 准确说符号在bat中叫做语法 3.对控制台的操作。4.网络应用 主要是外部命令。通过相关命令的学习 我们能实现各种各样的功能。
上面的内容只是对bat大体上的学习。对bat命令中每个命令的深层详细解读会在随后的时间里 随着我的学习 奉献给大家。我的文章里当然一定有些许的错误 还望大家能够及时指出 与人方便于己方便 不经意的一些好习惯 也会在某一刻不经意的影响你!
我是初步成稿 尚需要进一步完善 为了防止我忘记 就赶紧写出来了。我会慢慢的在里面加入实例和图片帮助理解。由于我权限不够 暂时只能在这里发帖 还望版主顺手把帖子放到正确的板块
注:dos基本命令学习:http://www.jb51.net/article/1010.htm
(未完待续:明天更新:rem echo pause 三个命令的深层详细解析)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2nd天:批处理相关教程:rem,echo,pause
今天首先从批处理最基本的说起 注意 一下本节内容的定位。为什么rem,echo,pause三个命令归属在批处理教程里 和在网上看到的cd命令 md命令 dir命令 有什么联系和区别呢? 这也是新入门的朋友有可能的疑惑 其实 rem echo pause以及以后我们要讲的一些命令 其说到底就是dos命令 和之前了解到和学习的一些dos命令运行原理没什么两样 之所以叫批处理命令 是应为这些命令是在批处理这个概念产生以后从而产生的主要应用于批处理中的命令,由于dos是单用户但任务的执行方式和批处理有很大区别 为了方便批处理运行 再今后的这些命令讲主要应用于批处理中 当然所有的dos命令都是可以在批处理中运行的。废话少说 开始学习:
rem命令
名称:注释命令 格式:(大小写可混用)rem(至少一个空格)注释内容
rem:它比较好理解,是用来给自己的代码添加注释 对给你自己的代码添加注释 你可以打开回显让别人也看看你的注释 你也可以自己关闭回显 那么注释将不会显示
执行过程:当命令解释器遇到某个行rem+空格这四个字符 会停止执行这四个字符后面的内容 并把后面的内容当作回显内容。
例:- @echo off
- rem 这是rem中的例子rem后如果有多个空格 第一个空格以后的内容统统解释为注释内容
- cd c:\
- rem !!!!进入c盘根目录!!!!
- pause
复制代码
---------------------------------------------------
echo命令
格式: 功能:
<li>echo 『off|on』</li> 显示回显状态
<li>echo 信息</li> 回显特定内容
<li>echo符号</li> 回显空行
rem:他的名字很恰当 叫回显。也就是说 返回bat中echo后面的字符或参数 又或者变量。总结echo可以返回的内容包括:返回字符、变量、声音、空行等等 我觉得比较实用的有echo y、echo符号、echo %变量%(一定要注意空格)这三个。echo./echo y通过管道命令能够实现某些命令的自动化
例如:echo y|time 命令可以看出 echo通过与其他符号的配合使用还有更强大的功能 像重定向符号等这里不一一列举 等学习符号内容的时候我们会进行总结。
执行过程详解:命令解释器会对你输入的格式进行分类 分别进行不同的操作
echo :显示回显状态
echo off/on :回显开关设置
echo 信息 :将信息读入内存 待命令执行时,写入con文件(就是显示器)显示。
echo 变量 :在这里用%变量%来引用变量来区分字符与变量
echo符号 :回显空行 实际上是将一个回车命令写入con文件然后执行例如echo= echo, echo; echo+ echo/ echo[ echo] echo: echo. echo\等等
在这里推荐使用前三个来表示空行。详情查看原作者:
echo技术内幕:http://demon.tw/reverse/cmd-internal-echo.html
例:- @echo
- @echo off
- echo 关于echo的相关功能
- echo
- echo=
- pause
复制代码
----------------------------------------------------
pause命令
格式:pause 功能:使命令行停止运行。
rem:其实这个命令出现时系统并非就真的一切都停止了。这个命令是有两个效果的。1是停止运行命令行只有再写任何内容命令解释器也不再理会。2是什么呢 如果你认真思考会想:他让屏幕显示了一行字:按任意键继续。。。如果你不想让他显示这些 可以将它重定向到一个空文件pause>nul。
----------------------------------------------------- @echo off
- echo 未完待续。。。明天更新:errorlevel title color mode goto命令&pause>nul
复制代码
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3rd:内容:无
由于昨天一时玩心大起 忘记了做功课。。。
后来十分后悔 我自制力总是差 也以此帖子来敦促自己
希望大家别学我!
在此我对自己进行深刻检讨 学习是一个持之以恒的事情 坚持就是胜利
否则 只会都某一天回顾之前的时光总是感叹:如果我能每天怎样怎样现在早就怎样怎样。。。
明天上午11点准时更新本来今天要更新的内容!对此决定我很痛心。
凡事要有度。。。。 本来我不想更新 直接等到明天更新 可我想 这一天是不会从新来过了 留下这个印记告诉自己 告诉大家 时间并不是忽视了他 他就能忽视你的
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
4th day
errorlevel
rem:首先这并不是一个内部或外部命令,也无所谓命令格式了,在这里主要分析他的功能和使用方法。我想 他究竟是返回上一行命令的返回码还是返回上一个命令的返回码呢?如果上一个命令由&链接呢?他是个变量,是个什么变量?类似的变量还有什么?带着这些疑问 我们来深入了解这个变量。
我们先来一段代码:- @echo off
- errorlevel & cd c:\
- echo %errorlevel%
- echo on
- pause
复制代码
我们知道errorlevel并不是一个命令 把它放在命令行的行首一定是错误的会回显errorlevel不是一个内部或外部命令 通过上面代码的回显可确定 errorlevel返回的是上一个命令的错误代码 。
用法:由于学识尚浅 到现在为止我只看到两个用法:
echo %errorlevel% :回显上一个命令的错误代码如果正确执行则默认返回0
if errorlevel。。。 :这个命令的用法我们会在if的学习中着重剖析。现在先引入了解他作为一个变量使用。
---------------------------------------------------------------------------------------------------------------------------------------
title
格式:title 字符 功能:设置cmd标题
rem:其实任何命令放到我这里我总爱突发奇想,不按套路出牌。为了照顾一些小白先从基础说起:知道这个命令设置的cmd标题到底说的是什么么?dos窗口打开以后上边框里的内容就是cmd标题一般情况下是cmd程序的路径,接着说不按套路出牌的问题。我在想title的功能会不会类似于echo 只不过title把内容回显在了标题处,而且,我们难道非一成不变的?是否可以让标题栏这个世界的小角落也精彩起来?可以在命令执行的过程中不断更改title或者写一个循环命令让他成为一个动态的title又或者做成一个进度条来表示批处理的执行进度。虽然这听起来有些无聊,可创造力似乎就是由于成长过程中的有聊选择而被迫灭,不是吗?应一方面我在喜爱那个,命令的对象无非是字符,文件,目录,磁盘,变量,程序,特殊符号,如果我们将title后面的对象换成变量什么的而不是固定的字符会怎样?随着我的愿想我进行了实验 发现除了title后面跟变量他会回显变量的值 其他的东西都会按照字符显示。也就是说变量可以以用在title后面。
执行过程:当命令解释器读出title的时候会对后面一个空格以后的内容解析 如果后面的内容是变量标题将设置成变量的值如果是其他的一概解析成字符 显示在标题处。
下面举个例子 例子内容没有任何意义只是为了理解该命令
例:- @echo off
- title ■
- ping /n 1 www.baidu.com
- title ■■
- ping /n 1 www.baidu.com
- title ■■■
- ping /n 1 www.baidu.com
- title ■■■■
- ping /n 1 www.baidu.com
- title ■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■■■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■■■■■■■■■■■■■■
- ping /n 1 www.baidu.com
- title ■■■■■■■■■■■■■■■■■■■■■■■■■■
- pause
复制代码
例:- echo off
- dir c:
- title %errorlevel%
- pause
- errorlevel
- title %errorlevel%
- pause>nul
复制代码
----------------------------------------------------------------------------------
title
格式: color 回复默认控制台颜色
color [背景][前景] 设置自定义控制台颜色
rem:先解释格式:第一行是恢复默认控制台颜色,设置控制台默认颜色的方法是启动dos命令控制台 在标题栏处右键单击。。剩下的就不用说了 如果实在不会把每一个都打开 了解一下也好 总有一个打开以后是的。第二行是设定本批处理文件在执行的时候前景颜色和背景颜色 当然dos也能用这命令,那么如何设置颜色呢?见下表
0=黑色 8=灰色
1=蓝色 9=浅蓝
2=绿色 a=浅绿
3=湖蓝 b=浅湖蓝
4=红色 c=淡红
5=紫色 d=浅紫
6=黄色 e=淡黄
7=白色 f=亮白色
-----------------------------------------------------------------------------
mode
mode这个命令呢 我建议新手先不进行深入研究。值了解简单的就好,因为他对于学批处理不超过半年的网友来说 深入了解实在没什么用,当然本教程会在之后的课程进行深层剖析。力求不漏掉内容。
基本学习内容:
例:- mode con cols=50 lines=50
复制代码
上面的例子是把命令行运行窗口设置成50行50列大小的窗口。大家知道con代表标准输出设备,在这里看作是一个文件。也就是将con这个文件设置成cols(列)=50 lines(行)=50,需要注意的是 这里的行与列并不是等单位长度的1行宽=2列宽,一般来说cols设置成100上下 lines设置成40上下比较合适。至于他能不能对其他文件进行设置,以我的知识暂时不能很有说服力的说明 但我认为只要一个文件有类似于con文件一样的参数 就是可以设置的,我尝试将一个名字为1.txt的文件进行上面的命令 结果回显cols不是一个正确的参数 我会花时间慢慢对这个命令做一些实验 敬请期待。
--------------------------------------------------------------------------------------------------------------------------------
goto
格式: goto 标签 功能:控制命令流程的跳转。
rem:其实这个命令应该是批处理命令里较为简单的命令的 go to 英文本意是指去。。。到。。个地方 所以 当你在批文件里坐下标号 然后在后面的文档中运行go to 之前的标号 命令命令就会回到标号处从新执行或者跳跃到某个标号处开始执行。举个简单的例子就彻底明白:
例:- @echo off
- :start
- echo 1234
- goto start
复制代码
例:- @echo off
- goto start
- _,--. ,--._
- \ > `-"""-' < /
- `-. .-'
- / 'e___e` \
- ( (o o) )
- _\_ `=' _/_
- / /|`-._.-'|\ \
- / /||_______||\ \
- _/ /_||=======||_\ \_
- / _/==|| ||==\_ \
- `'( ^^ ^^ )`'
- \ /
- \______|______/
- |______|______|
- )__| |__(
- / ] [ \
- `--' `--'
- :start
- start http://www.bathome.net/viewthread.php?tid=19377&page=1&extra=#pid118089
- pause
复制代码
想必这样大家明白了
---------------------------------------------未完待续 明天单元小结以及find命令和start命令。。。
5th day
单元小结
我在学习批处理的过程中,虽然自认为一丝不苟,却时不时感觉到一丝茫然,经过反省。我明白了这不安与茫然的来源,我太吧注意力放在了走路的动作上而忽略了我现在走到了哪里,我这么一直走是要去哪里,这比喻说白了就是要从整体上把握自己的进度。
内部命令
dos系统-------- ---------- 实现特定功能
外部命令
批处理---------批特有命令------流程控制------批符号------变量------语法------原理---------其它功能dos命令[/code]回顾之前所学的7个命令,rem echo 属于批常用命令 pause输入流程控制命令 errorlevel是一个变量 title color mode属于控制台属性设定命令 其实一个二维物体的属性无非就是几样:位置:屏幕上 大小:mode con来设定 颜色:color 形状:固定的矩形 内容:接下来学习 我们已经学完控制台dos窗口属性 学习了一部分基础命令 其实这些都是批处理命令的元素 概括的也差不多全了 还有个别的东西随后讲到如一些特殊符号 句柄 变量延迟什么的 让我徐徐道来 学完这些批处理主要的东西 接下来要学习的就是dos命令 对 就可以实现各种功能了。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6th day
今天明天周六、日不上班 泡图书馆 内容将会到周一更新
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
8th day
前两天借着我半生不熟的批处理知识 东借西凑写了一个程序 关于计算机用户和组管理方面的程序。本来两天时间就可以写完毕竟第一次写 高手可能三个小时就写完了 结果硬是因为一些小问题纠结到了三天才写完。写的过程中总结出了一些问题在这里提出来希望大牛们给指点一二:
批处理里的输入完以后回车的执行过程是怎样的?
:start
set /p choice=请选择功能:
if "%choice%" leq "10" (
goto %choice%
) else (
goto main
)
:1
echo this is 1
pause
打开以后直接回车 程序退出
打开以后选择一次超过10的 然后再回车就都回到main 怎么回事?
:好像是流程的运行会有记录 回到上文以后 按回车默认按照上一次跳转执行。
2.if * () else () 括号里的语句如果没有设定转向 执行完以后会跳跃到哪里?
3.系统类功能 要多考虑极限 极限多会发生什么bug?
3.标签中的变量好像不管用如:%a%
4.goto :eof发生错误
5.一个命令:rundll32 powrprof.dll,SetSuspendState 既不是外部命令也不是内部命令 怎么解释
还有问题1中 我输入的如果是字母 不属于if语句的条件范围 command会怎么办? 通过代码的运行 怎么走我怎么觉得蹊跷 遂想一定是有些知识我还没学到。
尤其是命令解释器运行原理这一块 对每个命令的执行过程 都不太了解。
这些知识我想学 可真没找到有专门这一模块的知识的书。群里的大牛普遍说在论坛里泡吧 泡够一定时间就什么都懂了。。。。只可以大牛们不懂我的心
现在都是效率的时代啊 真一个帖子一个帖子过的话 是要花很大的精力去筛没用的帖子的。
继续今天的课程:以后的课程脚步会放慢 因为慢慢的走进批处理的6环以内了(如果批处理是一个一共10环的靶子的话)接下来要讨论一些比较重要的命令 这些命令灵活多变需要细细揣摩才能了解每个细节。
find
格式:find "字符" path
find "char" 内容输入
rem:今天说一个相对强大的中等命令 find命令 开门见山 find能对谁操作? 两种情况 1是对文件,程序进行操作电脑上你能看到的以文件形式存在的好像都能用find命令
如果字符后面没有指定路径 可以手动输入或者应用其他文件的回显内容 这命令还是举例来的实在一些:- @echo off
- echo adaf>0.txt
- find "a" 0.txt
- system|find "ip"
- del 0.txt
- pause
复制代码
pause命令还有一些参数需要了解
/v 显示所有未包含指定字符串的行
/c 仅显示包含字符串的行数
/n 显示行号
/i 搜索字符串时忽略大小写
其实find命令重点在于他的应用 这是一个很好的文件字符操作命令
另外find命令可以套用:
find "adc" a.txt|find "bcd"
这样就能查找同时存在abc和bcd功能的行。
===================================今日闭贴 学习已经到了关键时刻 实在腾不出身子来再写教程 最近在深入学习几个重要的命令和知识点。等我学成以后再继续更新吧。我听取batman的意见 泡论坛半个月 查看别人的帖子 进一步学习。欢迎加我qq讨论问题1536706765
作者: forfiles 时间: 2012-10-8 15:09
计算机可以执行三种类型的程序:*.exe *.com *.bat
远远不止这三种吧?
作者: forfiles 时间: 2012-10-8 15:18
当发现这个命令并不存在时 他会返回给标准输出设备一个错误信息告诉用户
系统默认的三个文件描述符:
0代表标准输入
1代表标准输出
2代表出错
报错的时候用的一般是2号文件描述符
作者: forfiles 时间: 2012-10-8 15:24
则command程序会直接运行内存中的相应指令传送到cpu执行
...
以免发生cpu认不出你的错误指令
command负责对命令进行词法解释(检查你的命令是否正确)、语法解释(检查你的语法是否正确)等。
真正交给CPU执行的是0和1组成的数据流,而不是某个具体的命令。
作者: forfiles 时间: 2012-10-8 15:32
这个是不是笔误啊?
rem是注释
ren是修改文件名
这个不太准确吧,echo只是输出到标准输出,如果你指的是写入文件,那还是主要依靠重定向符号>
assoc,ftype是对字符的操作 通过这个命令更改文件关联相关的字符设定
文件关联最终是写入注册表的,说是字符操作有些不恰当。
作者: jakorzhang 时间: 2012-10-8 16:50
回复 5# forfiles
感谢你认真的阅读我的文章并且给予指导 我会慢慢完善这篇文章 一些模棱两可的地方 在日后的学习中会进行确认 如果日后的学习发生与之前所知道的相克 我定会弄明白 然后进行修改。
作者: jakorzhang 时间: 2012-10-8 17:58
回复 2# forfiles
我查了一些资料 好像都是说只有这三个可执行程序。
作者: forfiles 时间: 2012-10-8 22:14
回复 7# jakorzhang
.cmd
.vbs
.vbe
这些算吗?
作者: jakorzhang 时间: 2012-10-9 09:06
本帖最后由 jakorzhang 于 2012-10-9 09:08 编辑
回复 8# forfiles
.cmd程序运行不是本事的可执行 而是借助它的关联程序cmd.exe进行运行 跟.txt文件用notepad.exe运行一样 .vbs和.vbe是用系统盘下、system32中的wscript.exe程序运行
作者: forfiles 时间: 2012-10-10 18:38
回复 9# jakorzhang
.bat不是用cmd.exe去执行的吗?
作者: jains521 时间: 2012-10-11 15:44
批处理能运行的程序..应该说是什么程序都能被批处理运行..只要该程序所在的文件有.对应的执行器或者说解释器.
一个可执行程序.只要有对应的解释器就能被执行.比如某文件 abc 没有后缀名.
它可以被关联到 txt文件.doc文件. bat文件
这样它的解释器就是notpad,word,bat 等等.
作者: jains521 时间: 2012-10-11 15:56
批处理.按常用性命令来说.使用率高的如set,for,if,goto,call
这些命令占用一个批处理的半数以上
所以个人建议.先将如上命令系统学习一下.
ps:使用率高的命令本来列出很多.后来仔细逐个分析了一下.就剩这几个了.
作者: jakorzhang 时间: 2012-10-11 16:24
回复 12# jains521
你好 由于本帖定位在新手入门
所以进行了由简入难的阶梯式讲解
高级命令会在之后进一步更新
这文章每天都更新的 而且对命令的解释 我相信 一定会有新的视角来看一些熟悉的命令。
谢谢参与 之后文章首部会加入目录 插入高级命令的链接进行直接跳转 来方便高一层次的读者使用。
作者: jakorzhang 时间: 2012-10-11 16:27
回复 11# jains521
你的解释很正确 系统由可执行程序和文件结构组成 真正的可执行程序种类并不多(此处讨论win系统)更多的是文件经过文件关联 使用可执行程序进行操作。
可以通过assoc命令查看文件关联 ftype命令查看文件关联的对应程序。
作者: web 时间: 2012-10-13 23:51
批处理 vbs 字母数字的排列组合 那个效率好
作者: forfiles 时间: 2012-10-14 11:21
回复 15# web
我猜是VBS
作者: quartz123 时间: 2012-11-26 12:37
新手收藏学习!
作者: 屋顶扮超人 时间: 2012-11-27 17:04
看了这个帖子后感觉更加迷茫了。还是看精华贴感觉易懂
作者: cjiabing 时间: 2013-3-5 19:56
首先感谢和欣赏楼主的一腔热情!~
其次本版主提提意见:楼主选题构思最好能小一点,做个更小的更有新意的题目,因为这种大而泛泛的入门帖本论坛教学版还是蛮多的,重复就没有意思了。
1、第一部分最好先把基础知识弄清楚了再写,十分必要的才写,否则吃力不讨好,容易引起误解。
2、第二部分介绍一些常用命令,比如echo、pause等等,这些命令的教程到处都是,楼主就不必再费神去解释了,确实要写,就简单地罗列它们是干嘛用的就可以了。批处理命令通常分为基础dos命令,如echo、cls等,常用命令如find、dir等,核心命令如for、set、call等命令,特殊命令如sc、wmic等。对新手而言,掌握基础命令,熟悉常用命令还不算学会批处理,甚至会用if、set都不算学会批处理,只有学会FOR了,并能综合地运用各种命令来实现各种编程目标,这才叫入门学会。
3、新手教材最好突出“简明”二字,把结构章法再调整下。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |