windows batch语法

windows BATCH基本知识
恢宏名是bat(在nt/2000/xp/2003下啊不过cmd)的文件就是批处理公事。

前言

  •  什么是操作系统:操作系统是一样种系统软件,用来治本总计机的懦弱硬件资源。
  •  主流操作系统:

    移动便携式设备:Android、iOS、Windows Phone、Symbian(塞班)、布莱克(Black) Berry(HUAWEI)
OS

    PC个人电脑:Windows、Mac OS、Unix、Linux

  •  什么是iOS:iOS是相同慢由苹果商店开发之移位操作系统(iOS运行在走便携式设备及)
  •  什么是iOS开发:就是出运作在iOS系统上之运或游戏软件,如:QQ、Taobao、愤怒的鸟儿等。
  •  Mac OS文件系统:对文件举行保管的系让文件系统

==== 注 =======================================
.bat是dos下的批处理公事
.cmd是nt内核命令行环境之另一样种植批处理文件
自打更广义的角度来拘禁,unix的shell脚本以及任何操作系统还应用程序中由外壳举行分解实施之文书,都存有跟批判处理文件相当相似的打算,而且同样是由于专用解释器以举办呢单位表明施行,这种文本情势重新通用的称谓是脚本语言。所以打某个程度分析,batch,
unix shell, awk, basic, perl

  UNIX常用命令:

    查看命令的事无巨细匡助: man 命令名       (比如要探望 ls
命令的详尽用法,执行 man ls)

    pwd  (print work directory):打印当前目录(工作目录)     目录 ==
文件夹

    cd   (change directory)

    cd /   进入根目录

    cd Users   进入用户目录

    cd tarena  进入用户之主目录(Home Directory)

    ls (list) :列出当前目录下的具有情节

      ls -a  //-a
即all,列有目录下的备文件(包括以.起始的含文件)

      ls -l  //-l
列举文件之详细信息(文件称、权限、所有者、文件大小等)

    mkdir  创立目录(文件夹)

    touch  创设文件

    who  显示当前用户称

    clear 清屏

    touch xxx.m  新建xxx.m文件

    open xxx.m   打开xxx.m文件

    在清目录下下ls列有装有内容:

      Applications  放所有的应用程序

      Library           应用程序需要的其库等内容

      Network        网络有关

      System          系统相关

      Users            用户的目录

相当于脚本语言都是一律的,只但是应用的界定及释疑的平台各有不同而已。甚至小应用程序如故沿用批处理当下同一叫作,而这内容与壮大名与dos的批判处理也以完全两样。

先是批处理公事是一个文书文件,这么些文件的各国一行都是同一漫漫DOS命令(大部分下就好象我们当DOS提醒符下执行之一声令下执行一样),你可以DOS下的Edit或者Windows的记事本(notepad)等此外祖父文文件编写工具创立与改动批处理公事。

==== 注 ===================

  常用目录或路径:

    主目录(Home
Directory):一个用户发一个团结的主目录,用户在这目录下拥有大高的权。

    /   根目录(Root Directory):唯有一个,代表整个硬盘

    特殊路径:   /  根路径        ./  当前路        ../  上超级路

    Desktop          桌面

    Documents      文稿

    Downloads      下载

    Library            其他

    Movies            影片

    Music              音乐

    Pictures           图片

    Public             公共目录

 注意:按一下tab键,可以活动补齐指令称、文件夹、文件夹名等。

批处理公事中了可采用非dos命令,甚至可以使用不有可实施特性的通常数据性文件,这缘于windows系统那些最新解释平台的涉入,使得批处理的使更加”边缘化”。所以大家谈谈的批处理相应界定在dos环境或命令行环境中,否则广大价值观以及设定都得开比老的变动。

其次,批处理公事是平等种简单的程序,可以经规范语句(if)和流程控制语句(goto)来决定命令运行的流程,在批判处理面临吗足以以循环语句子(for)来循环执行同一长命令。当然,批处理文件之编程能力及C语言等编程语句比起来是非凡片的,也是十分休正经的。批处理的先后报句就是一条条的DOS命令(包括内部命令和外部命令),而批判处理的力要取决于你所使用的指令。

==== 注 ==================
批处理文件(batch file)也可称之为批处理程序(batch
program),那或多或少和编译型语言有所不同,就c语言来说,扩大名为c或者cpp的文书可以叫c语言文件或者c语言源代码,但但出编译连接后底

C语言的风味

  • 添加的运算符
  • 丰硕的数据类型
  • 足直接操作硬件
  • 快快的目标代码
  • 可移植性好

exe文件才好叫做c语言程序。因为批处理文件本身既享文本的可读性,又具有次的可执行性,这个名的限是相比模糊的。

其三,每个编写好的批判处理文件还分外给一个DOS的外部命令,你可拿它们所于的目录放到你的DOS搜索路径(path)中来让其可当随意地点运行。一个可以的惯是以硬盘上建一个bat或者batch目录(例如C:\BATCH),然后将持有你编的批判处理文件放到该目录中,那样只要以path中装置上c:\batch,你就是得在任意地方运行具有你编的批处理程序。

==== 注 =====
纯以dos系统而言,可执行程序大约可以划分为五类,依照执行优先级由高到没有排列分别是:DOSKEY宏命令(预先驻留内存),COMMAND.COM中的里命令(按照内存的条件随时进驻内存),以com为扩大名的可执行程序(由command.com
直接载入内存),以exe位扩充名的可执行程序(由command.com
重定位后载入内存),以bat位扩充名的批判处理程序(由command.com

C语言的用途

  • 编系统软件、图形处理、单片机程序、嵌入式系统出依旧是用来科研
  • 编辑游戏外挂
  • 编写android程序
  • 编写iOS程序

分解分析,遵照该情以优先级顺序调用第2,3,4,5种植可执行程序,分析一行,执行一行,文件本身不载入内存)

季,在DOS和Win9x/Me系统下,C:盘根目录下之AUTOEXEC.BAT批处理公事是半自动运行批处理文件,每一次系统启动时会自动运行该公文,你得拿系统每便启动时犹使运行的一声令下放入该公文被,例如设置搜索路径,调入鼠标驱动与磁盘缓存,设置系统环境变量等。下边是一个运作为Windows
98下的autoexec.bat的演示:
@ECHO OFF
PATH
C:\WINDOWS;C:\WINDOWS\COMMAND;C:\UCDOS;C:\DOSTools;<br>
C:\SYSTOOLS;C:\WINTOOLS;C:\BATCH
LH SMARTDRV.EXE /X
LH DOSKEY.COM /insert
LH CTMOUSE.EXE
SET TEMP=D:\TEMP
SET TMP=D:\TEMP
==== 注 =====
AUTOEXEC.BAT为DOS系统的全自动运行批处理文件,由COMMAND.COM启动时讲实施;
要当Win9x环境遭到,不仅平添补助了 漫步者TART.BAT, WINSTART.BAT
等多外活动运行的批处理公事,对AUTOEXEC.BAT 也搭了 .DOS .W40 .BAK
.OLD .PWS 等众变体以适应复杂的环境以及变异的需。
==== willsort 编注 =============

下关于命令的归类,有不少值得推敲的地方。常用命令中的@本不是令,而dir、copy等啊不行常用的指令却未曾列入,
而特殊命令中有命令对我吧如故常用命令。提出用批处理所引述的命分为内命令、外部命令、第三正在程序三类。而其中命令和外部命令中别有同像样是专用于或常用于批判处理中之命令可称”批处理命令”。

以下摘录MS-DOS 6.22
匡助文档中有关”批处理命令”的文,当然,其中微概念和概念已经略落后了。

批处理命令

批处理文件或者批处理程序是一个含有多MS-DOS命令的正文文件,扩充名为.BAT。当当命令指示符下敲入批处理程序的号时,MS-DOS成组执行这批处理程序中的下令。

C语言的编译器

  1. gcc  GNU Compiler
    Collection(GNU编译器套件),GNU协会开发的开源免费之编译器。

    ( gcc 原名为 GNU C
Compiler,只可以处理C语言,后来GCC很快地扩充,也得处理C++、Objective-C、Java等另语言)

  1. clang  开源的BSD协议的基于LLVM的编译器;苹果店温馨之编译器。

    (LLVM可以当多种语言编译器的后台来使用,前端用clang)

其他在命令提醒符下可使用的通令还可用在批判处理程序中。其它,下面MS-DOS命令是特别以批处理程序中使的。

常用命令

echo、@、call、pause、rem(小技巧:用::代替rem)是批处理公事最常用之几单命,我们不怕于他们开端学于。

==== 注 ===========
首先, @ 不是一个发令, 而是DOS 批处理的一个不同通常标记符,
仅用于屏蔽命令行回显.
下边是DOS命令行或批处理着恐会合视的组成部分非正规标记符:
CR(0D) 命令行截至符
Escape(1B) ANSI转义字符指引合
Space(20) 常用底参数界定符
Tab(09) ; = 不常用之参数界定符

  • COPY命令文件连接符
    * ? 文件通配符
    “” 字符串界定符
    | 命令管道符
    < > >> 文件重定向符
    @ 命令行回显屏蔽符
    / 参数开关指引合
    : 批处理标签引导合
    % 批处理变量指导合

从, :: 确实可以打及rem 的诠释功用, 而且更精简有效; 但有少触及得专注:
第一, 除了 :: 之外, 任何以 :起始的配符行, 在批判处理面临都让当作标号,
而直接忽略其后的具有内容, 只是为着与常规的标注相区别, 提出采用 goto
所无法甄此外标号, 即在 :后紧跟一个非字母数字的一个特殊符号.
第 次, 与rem 不同的凡, ::后底字符行在实践时无会晤扭转显, 无论是否用echo
on打开命令执行回显状态, 因为命令解释器不看他是一个实惠的下令执行,
就这个点来拘禁, rem 在好几场地下用比 :: 更为适用; 另外, rem 可以用来

C语言的本子问题

  1. 1983年米利坚国家标准局(American National Standards
    Institute,简称ANSI)创设了一个委员会,开端制订C语言标准的干活
  2. 1989年C语言标准于准,那一个版的C语言标准常常给叫作ANSI C
  3. 1999年,国际标准化协会ISO又对C语言标准开展修订,在主导保存原C语言特征的底蕴及,针对该的急需,增添了有些效能,命名也C99
  4. 二〇一一年1九月8日,ISO正式发布C语言新的国际标准草案:C11

config.sys 文件中.

echo 表示展现是命令后底字符
echo off 代表在这报告句后所有运行的指令还未显命令执行本身
@与echo
off相象,但其是加在每个命令行的极致前面,表示运行时不显得就无异尽之命令执行(只可以影响时推行)。
call
调用外一个批处理公事(虽然无用call而一贯调用其它批处理公事,那么执行了这多少个批处理文件后以不可以回来时文件并执行时文件的接轨命令)。
pause 运行此句会暂停批处理的推行并于屏幕上体现Press any key to
continue…的提示,等待用户以任意键后连续
rem
代表此命令后的字符为讲实施(注释),不执,只是被协调以后参见用的(万分给序中之诠释)。
==== 注 =====
此处的叙述比较凌乱, 不如间接引用个令的指令执行助更系统


ECHO

当程序运行时,突显或隐藏批处理程序中之正文。也然则用来允许或禁止命令的回显。

于运行批处理程序时,MS-DOS一般以屏幕上展示(回显)批处理程序中之通令。
利用ECHO命令可关闭是效能。

语法

ECHO [ON|OFF]

一旦要就此echo命令突显平长长的命令,可用下述语法:

echo [message]

参数

ON|OFF
指定是否允许命令的回显。若使出示当前底ECHO的装置,可接纳不牵动参数的ECHO
命令。

message
点名为MS-DOS在屏幕上出示的正文。


CALL

自打一个批处理程序中调用另一个批处理程序,而未会晤挑起第一独批处理的暂停。

语法

CALL [drive:][path]filename [batch-parameters]

参数

[drive:][path]filename
指定要调用的批处理程序的名及其存放处。文件称必须用.BAT作扩张名。

batch-parameters
点名批处理程序所要的命令执行新闻。


PAUSE

暂停批处理程序的尽并体现同一漫长信息,指示用户按任意键继续执行。只可以于批处
理程序中应用该令。

语法

PAUSE

REM

以批处理公事要CONFIG.SYS中入申明。也可用REM命令来遮掩命令(在CONFIG.SYS
被呢得以据此分号 ; 代替REM命令,但以批判处理文件中即便免可以替)。

语法

REM [string]

参数

string

C语言的合法正式

  1. ANSI C /
    C89业内:1989年,美利坚同盟国国家标准协会(ANSI)发布了第一单官方正规(简称
    C89标准 或 ANSI C)。
  2. C99标准:1999年,国际标准化社团(ISO)和国际电工委员会(IEC)发布了C语言的新规范。
  3. C11正规:二〇一一年1月8日,国际标准化社团(ISO)和国际电工委员会(IEC)再一次发表了C语言的初专业。

点名要屏蔽的一声令下或只要含有的注释。

例1:用edit编辑a.bat文件,输入下列内容后存盘为c:\a.bat,执行该批处理公事后而实现:将根本目录中所有文件写副
a.txt中,启动UCDOS,进入WPS等效果。

  批判处理文件的情呢:         命令注释:

    @echo off           不亮连续命令行及当前命令行
    dir c:\*.* >a.txt       将c盘文件列表写副a.txt
    call c:\ucdos\ucdos.bat    调用ucdos
    echo 你好            显示”你好”
    pause              暂停,等待按键继续
    rem 准备运行wps         注释:准备运行wps
    cd ucdos            进入ucdos目录
    wps               运行wps  

批处理公事之参数

批处理文件还是可以够像C语言的函数一样接纳参数(异常给DOS命令的通令执行参数),这需要动用一个参数表示可”%”。

%[1-9]代表参数,参数是依于运作批处理公事时于文件名后加的因为空格(或者Tab)分隔的字符串。变量可以自%0到%9,%0表示批判处理命令自己,此外参数字符串用%1到%9一一表示。

例2:C:根目录下爆发一致批判处理公事称也f.bat,内容吧:
@echo off
format %1

假诺执行C:\>f a:
这就是说以实践f.bat时,%1就代表a:,这样format %1纵一定给format
a:,于是点的下令运行时实际履行之是format a:

例3:C:根目录下同样批判处理文件称也t.bat,内容也:
@echo off
type %1
type %2

这就是说运行C:\>t a.txt b.txt
%1 : 表示a.txt
%2 : 表示b.txt
于是点的下令将逐条地体现a.txt和b.txt文件之情。

==== 注 ===============
参 数在批处理中吗当作变量处理, 所以同样应用百分号作为指点合,
其后跟0-9受到的一个数字组合参数引用符. 引用符和参数之间 (例如上文中的 %1
暨 a: ) 的涉嫌看似于变量指针与变量值的关系.
当我们若引用第十一个或又多单参数时, 就必须走DOS 的参数开首指针. shift
命令正做了之活动指针的角色, 它用参数的前奏指针动到下一个参数,
类似C 语言中之指针操作. 图示如下:

开头状态, cmd 为命令名, 可以据此 %0 援
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | | |
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9

透过1赖shift后, cmd 将无法给引用
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | | |
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9

经过2次shift后, arg1吗受废弃, %9据于为空, 没有引用意义
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | |
%0 %1 %2 %3 %4 %5 %6 %7 %8

不满的凡, win9x 和DOS下均不辅助 shift 的逆操作. 唯有当 nt
内核命令行环境下, shift 才支撑 /n 参数,

C语言程序的运作过程

相同、编译:编译是由于编译器来实施的,重要做的时语法检查工作;将C源程序翻译成总括机能认识此外0和1。

  • 利用什么编译器:Xcode3使用GCC,Xcode4使用LLVM编译器(前端用clang)
  • 咋样拔取clang编译器编译程序:
    • 以顶峰中输入:cc  –c  文件名.c
    • 编译成功,会生成.o目的文件
  • 编译器的谬误以及警示功能
    • 设若代码来语法问题,编译器会直接报错。并提出错误的个数与求举行号。
    • 假定有1只谬误,程序虽然无能够编译成功,也未会师生成.o文件
    • 告诫音讯可是编译器的部分提议,并无影响编译通过

次、链接:将好编译好的.o目的文件及C程序库函数组合在一起,生成可执行文件。

    由链接器完成,clang编译器里面已经包含了链接指令

  • 当终极中输入:cc  文件名.o
  • 链接成功,会生成a.out可执行文件

老三、运行:两栽运行情势:

  • 直接双击打开a.out文件
  • 极端中运用 ./a.out 指令

  修改文件内容后,一定要双重编译、链接,再运行。

  其他clang指令:

  • 改可执行文件a.out的名目:cc  xxx.o  -o 新文件名
  • 一同编译、链接:cc  xxx.c

  图片 1

  整个程序的周转过程:编写源程序==>预处理==>编译器==>连接器==>可实施

  注意:gcc可换为clang(CC); gcc -E test.c 查看编译前文件内容
(-E的意思是:做预处理)

  1. 先期处理:gcc -E test.c -o test.i
    (预处理的结果好为此-o的主意保存至一个文本test.i中)
  2. 编译:gcc -c test.i  //编译成功,会生成.o目标文件; 1,2得合:gcc
    -c test.c
  3. 连接:gcc test.o
  4. 执行:./a.out
  •  简写:gcc test.c  (1,2,3的合并)
  •  执行:./a.out

可以为第一参数为基准返复移动开头指针.

分外规命令

if goto choice
for是批判处理文件被较高级的通令,尽管登时几乎单你用得够呛内行,你不怕是批判处理文件的师啦。

同样、if 是克罗地亚语句,用来判断是否符合规定的格,从而控制举行不一之通令。
有三栽格式:

1、if [not] “参数” == “字符串” 待执行之一声令下

参数假设当(not表示未等于,下同)指定的字符串,则法建立,运行命令,否则运行下同样句。

例:if “%1″==”a” format a:

====

if 的命执行助遭受关于此点的讲述为:
IF [NOT] string1==string2 command
以斯发生以下几点需要留意:

  1. 含字符串的双料引号不是语法所必须的,
    而只是习惯及应用的均等种”防空”字符
  2. string1 未必是参数, 它呢堪是环境变量,
    循环变量以及其余字符串常量或变量
  3. command 不是语法所不可不的, string2

    继同一个空格就足以组成一个有效的吩咐行

2、if [not] exist [路径\]文本名 待执行之下令
使暴发指定的文本,则法建立,运行命令,否则运行下同样句。

如: if exist c:\config.sys type c:\config.sys
代表只要存在c:\config.sys文件,则显示它的始末。

****** 注 ********
否足以以以下的用法:
if exist command
device 是指DOS系统遭到就加载的设备, 在win98下一般暴发:
AUX, PRN, CON, NUL
COM1, COM2, COM3, COM4
LPT1, LPT2, LPT3, LPT4
XMSXXXX0, EMMXXXX0
A: B: C: …,
CLOCK$, CONFIG$, DblBuff$, IFS$HLP$
切切实实的始末会以硬软件条件的例外而有些发差距, 使用这个设备名称时,
需要保证以下三触及:

  1. 该装备确实有(由软件虚拟的配备除外)
  2. 该装置驱动程序已加载(aux, prn等标准配备由系统缺省定义)
  3. 该设备已经预备好(首虽然指a: b: …, com1…, lpt1…等)
    但经过命令 mem/d | find “device” /i 来检阅你的系中所加载的装备
    外 外, 在DOS系统被, 设备呢给认为是同等种分外的文件,
    而文件也可称作字符设备;
    因为设备(device)与公事如故下句柄(handle)来治本的, 句柄就是名,
    类似于文件称, 只不了句柄不是应用为磁盘管理, 而是应用为内存管理而已,

    所谓设备加载也即指在内存中为夫分配可援引的句子柄.

3、if errorlevel <数字> 待执行之命

这几个多DOS程序在运行了晚会回一个数字值用来表示程序运行的结果(或者状态),通过if
errorlevel命令能够断定程序的返值,依照不同的返值来支配履行不一之一声令下(重返值必须依从分外至有些之顺序排列)。假如回到回值等于指定的数字,则法建立,运行命令,否则运行下一样句。

如if errorlevel 2 goto x2

==== 注 ===========
再次来到值从杀及稍微的顺序排列不是须的, 而只是执行命令为 goto 时之习惯用法,
当使用 set 作为执行命令时, 平时会打小很是度顺序排,
比如需用重回码置入环境变量, 就需要以以下的一一形式:

if errorlevel 1 set el=1
if errorlevel 2 set el=2
if errorlevel 3 set el=3
if errorlevel 4 set el=4
if errorlevel 5 set el=5

本, 也足以以以下循环来替代, 原理是同等的:
for %%e in (1 2 3 4 5 6 7 8…) do if errorlevel %%e set el=%%e

再也敏捷简明之用法, 可以参见我写的旁一样篇有关获取 errorlevel 的章

发出 现此种植现象的故是, if errorlevel 相比重临码的判定标准并非等于,
而是大于等于. 由于 goto 的跳转特性,
由小到大排序会招在相比小之归码处就跳出; 而由 set命令的 “重复”
赋值特性, 由特别到稍微排序会导致相比较小的回来码 “覆盖” 较生之返码.

此外, 即便 if errorlevel=<数字> command 也是行之有效之命执行, 但也只是

故Xcode创造项目

  图片 2

  • Product Name:产品名称
  • Organization Name:集团名称
  • Company Identifier :公司唯一标识,一般为合作社官网网址的倒序
  • Bundle Identifier:产品唯一标识
  • Type(Language):项目语言类

 

  C语言程序是由函数构成的,C程序的入口是main函数。函数内部代码的推行各类,是由达及下实施之,如瀑一样。

  错误类型:

  • 语法错误:编译器会直接报错
  • 逻辑错误:没有语法错误,只不过运行结果莫正确

command.com 解释命令行时以 = 作为命令行切分符而忽视掉喽了

第二、goto
批处理文件运行至此地用超到goto所指定的标(标号即label,标号用:后以及正规字符串来定义)处,goto语句一般和if配合以,按照不同之尺码来推行不一之命令组。

如:

goto end

:end
echo this is the end

号用”:字符串”来定义,标号所当实践未给执行。

==== willsort 编注

label 常被译为 “标签” , 可是这并无拥有广阔的约定性.

goto 及 : 联用而实现执行中途之跳转, 再结合 if 可实现执行过程的原则分支,
两只 if 即可兑现命令的分组, 类似 C 中 switch case 结构如故 Basic 中之
select case 结构, 大规模且结构化的通令分组即可实现高级语言中之函数功用.
以下是批判处理与C/Basic在语法结构上的相比:

Batch C / Basic
goto&: goto&:
goto&:&if if{}&else{} / if&elseif&endif
goto&:&if… switch&case / select case

关键字

  C语言程序是由于英文单词构成的,其中小单词被C语言赋予了奇特意义,那么那多少个单词就是至关首要字。

  C语言的系列保留字(32个首要字)

  1. 骨干数据列(5只):void、int、float、double、char
  • void:注解函数无再次回到值或任参数,阐明无类型指针,呈现摈弃运算结果
  • int:整型数据,平常也编译器指定的机械字长
  • float:单精度浮点型数据,属于浮点数据的等同栽
  • double:双精度浮点型数据,属于浮点数据的平等种
  • char:字符型类型数据,属于整型数据的如出一辙种

花色修饰关键字(4独):short、long、signed、unsigned

  • short:修饰int,短整型数据,可以大概被修饰的int
  • long:修饰int,长整型数据,能够简简单单被修饰的int
  • singed:修饰整型数据,有标志数据类型
  • unsigned:修饰整型数据,无符号数据类型

复杂类型紧要字(5独):struct、union、enum、typedef、sizeof

  • struct:结构体注解
  • union:共用体注解
  • enum:枚举申明
  • typedef:表明类型别名
  • sizeof:拿到特定类型或者特定项目变量的大大小小

仓储级别关键字(6独):auto、static、register、extern、const、volatile

  • auto:指定为自动变量,由编译器自动分配与释放,平时在栈上分配空间;修饰局部变量,默认省有些不写
  • static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数功能域为文件里
  • register:指定为寄存器变量,提出编译器将变量存储到寄存器中拔取,也堪修饰函数形参,提议编译器通过寄存器而非是堆栈传递参数
  • extern:指定相应变量为表变量,即标示变量或者函数的概念在其它文件被,指示编译器遇到这变量和函数时于此外模块中追寻这定义
  • const:与volatile合称“cv’特性”,指定变量不可让当下线程/进程改变(但来或吃网要另线程/进程改变)
  • volatile:与cost合称“cv特性”,指定变量的价值有或谋面为网或者另线程/进程改变,强制编译器每趟由内存中拿到该变量的值

流程控制重大字(12单)

  • 跳转结构(4只):return、continue、break、goto

  • return:用在部数体中,重临特定值(或void值,即非再次回到值),功能:结束函数

  • continue:截至时轮回,起初下一样车轮循环
  • break:跳出当前循环或switch结构
  • goto:无条件跳反语句

  • 支行协会(5只):if、else、switch、case、default

  • if:条件语句,后边不需要放分号

  • else:条件语句否定分支(与if连用)
  • switch:开关语句(多重分支语句)
  • case:开关语句子被的分段标记
  • default:开关语句被的“其他”分支,可选择

  • 巡回结构(3独):for、do、while

        for:for循环结构,for(1;2;3)4;的履行顺序为1->2->4->3->2…循环,其中2为循环往复条件

        do:do循环结构,do 1
while(2);的履各种是1->2->1…巡回,2吗循环条件

        while:while循环结构,while(1)2;的履行顺序是1->2->1…循环往复,1为循环条件

goto&:&if&set&envar… function() / function(),sub()

老三、choice
用这个命令可以让用户输入一个字符(用于接纳),从而依照用户的挑重临不同之errorlevel,然后叫if
errorlevel配合,遵照用户的挑三拣四运行不同的下令。

瞩目:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice
/?查看用法。

choice的下令语法(该语法为Windows
2003负choice命令的语法,另外版本的choice的指令语法与这些哈得孙湾小异):

CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M
text]

描述:
拖欠工具允许用户从选列表选取一个类型并赶回所采用项目标目录。

参数列表:
/C choices 指定要成立的选择项列表。默认列表是 “YN”。

/N 在升迁符中隐藏选项列表。提醒后边的音拿到突显,
挑依然处在启用状态。

/CS 允许采用分高低写的精选项。在默认意况下,那些家伙
大凡休分开高低写的。

/T timeout 做出默认选项在此以前,暂停的秒数。可接受之价是由 0
交 9999。假若指定了 0,就无汇合时有爆发暂停,默认选项
会晤获选取。

/D choice 在 nnnn 秒之后指定默认选项项。字符必须以就此 /C 选
起指定的一模一样组采取中; 同时,必须用 /T 指定 nnnn。

/M text 指定提醒此前若出示的音。假使无点名,工具就
来得提醒。

/? 呈现扶助信息。

注意:
ERRORLEVEL 环境变量被设置为打选集拔取的键索引。列有的首先个选
择重临 1,第二独选项再次回到 2,等等。假诺用户仍的键不是有效之选项,
拖欠工具会发生警告声。假若该工具检测及左状态,它会师再次回到 255 的
ERRORLEVEL 值。即使用户按 Ctrl+Break 或 Ctrl+C 键,该工具会回 0
的 ERRORLEVEL 值。在一个批程序中行使 ERRORLEVEL 参数时,将参数降
序排列。

示例:
CHOICE /?
CHOICE /C YNC /M “确认要遵照 Y,否请按 N,或者撤回请以 C。”
CHOICE /T 10 /C ync /CS /D y
CHOICE /C ab /M “选项 1 请选择 a,选项 2 请选择 b。”
CHOICE /C ab /N /M “选项 1 请选择 a,选项 2 请选择 b。”

==== willsort 编注 ===============================
自排有win98下choice的用法帮忙, 已提供区分

Waits for the user to choose one of a set of choices.
等候用户挑选同一组要选字符中的一个

CHOICE [/C[:]choices] [/N] [/S] [/T[:]c,nn] [text]

/C[:]choices Specifies allowable keys. Default is YN
点名允许的按键(待选字符), 默看YN
/N Do not display choices and ? at end of prompt string.
切莫出示提醒字符串中的问号和内需选字符
/S Treat choice keys as case sensitive.
拍卖要选字符时高低写敏感
/T[:]c,nn Default choice to c after nn seconds
当 nn 秒后默认选项 c
text Prompt string to display
假使显得的指示字符串
ERRORLEVEL is set to offset of key user presses in choices.
ERRORLEVEL 被装置也用户键入的字符在用选字符中的偏移值
若自己运行命令:CHOICE /C YNC /M “确认请以 Y,否请按 N,或者撤回请按
C。”
屏幕上会合来得:
肯定要按 Y,否请按 N,或者撤销请遵 C。 [Y,N,C]?

规章:test.bat的情节如下(注意,用if
errorlevel判断再次来到值平时,要按部就班重回值从大交低位排列):
@echo off
choice /C dme /M “defrag,mem,end”
if errorlevel 3 goto end
if errorlevel 2 goto mem
if errorlevel 1 goto defrag

:defrag
c:\dos\defrag
goto end

:mem
mem
goto end

:end
echo good bye

是 批处理运行后,将映现”defrag,mem,end[D,M,E]?” ,用户可选用d m e
,然后if语句遵照用户之取舍作出判断,d表示执行标为defrag的程序段,m表示执行标为mem的程序段,e表示执行标为end的程序段,每个程序段最终都坐goto
end将先后跳到end标号处,然后程序用展现good bye,批处理运行了。

季、for 循环命令,只要条件符合,它用反复执同一命令。

语法:
对平组文件中之诸一个文本实施某特定命令。

FOR %%variable IN (set) DO command [command-parameters]

%%variable 指定一个十足字母可替换的参数。
(set) 指定一个或者雷同组文件。可以应用通配符。
command 指定对每个文件举办之下令。
command-parameters
也一定命令指定参数或指令执行开关。

诸如一个批处理文件被出一行:
for %%c in (*.bat *.txt) do type %%c

就算该令行会展现当前目录下所发盖bat和txt为扩大名的公文的内容。

标识符

标示符就是程序员自己以程序中打底片名字。(常见的凡:变量的号与函数的名称)

  1. 取名规则:(一定假使遵守) 

    • 只得出于26独英文字母的深浅写、10独阿拉伯数字0~9、下划线_组成

    • 严厉区分轻重缓急写,比如test和Test是2只不等之标识符

    • 切莫可以以数字开

    • 非可以行使要字作标识符
  2. 命名规范:(最好而服从) 

    • 尽量从个来意义的名,一般用英文单词,注意长度适中,可读性要后来居上。

    • 假如标识符中带有多独单词,可以利用驼峰标识(除开第一个单词,前面每个单词的首字母都是大写):
      •  firstName、myFirstName,或者使下划线_来连接:first_name、my_first_name
    • 诚如情况下,
      • 变量名:每个单词首许母大写;
      • 函数(方法):第一单单词的首字母小写,此外单词的首字母都大写。

          (如:UserName    PassWord   showMessage  isPrint)

==== willsort 编注

欲提议的凡, 当()中之字符串并非单个或多独文件名时,
它以仅吃当作字符串替换, 那一个特点还增长()中可以坐六只字符串的风味,
很强烈 for 可以于作为一栽满历型循环.
当, 在 nt/2000/xp/2003 类其它通令行环境中, for 被赋予了双重多的风味,
使之好分析命令输出或者文件中之字符串,

数据

  1. 静态数据:是据部分永久性的数量,一般存储于硬盘中。
  2. 动态数据:是依赖以程序运行过程被,动态暴发的临时数据,一般存储于内存中。
  • 当运行有程序(软件)时,整个程序尽管碰面让加载到外存中,在程序运行过程中,会发出各样各个的临时数据,这么些临时数据都是储存于内存中的。当次截至运行依然电脑于挟持关闭时,那些程序来的有所临时数据还碰面叫铲除。

  • 君或会师咨询:既然硬盘的仓储空间这么大,为什么无把持有的应用程序加载到硬盘中错过实践吗?有只关键原因是内存的访问速度比硬盘快N倍。

数据的变换

  • 静态数据到动态数据的换(也不怕是打磁盘加载到内存)
  • 动态数据到静态数据的变
    •  如:手机拍照片存储到手机的硬盘上
  1. 多少的高低
  • 无论是是静态依旧动态数据,都是0暨1结合的。
  • 数码还暴发大小,静态数据就会晤占据硬盘的半空中,动态数据就占内存的半空中
  • 数更老,包含的0暨1哪怕逾多,比特位和字节
  • 计量单位:

        1 B = 8 bit

        1 KB = 1024 B, 1 MB = 1024 KB

        1 GB = 1024 MB, 1 TB = 1024 GB

呢有多开关被用来扩张了文本替换功效.

批处理示例

  1. IF-EXIST

1) 首先用记事本在C:\立一个test1.bat批处理文件,文件内容如下:
@echo off
IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT
IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist

接下来运行它们:
C:\>TEST1.BAT

如果C:\存在AUTOEXEC.BAT文件,那么其的始末即会合为出示出来,假若不有,批处理就谋面唤起而该公文未存。

2) 接着还建一个test2.bat文件,内容如下:
@ECHO OFF
IF EXIST \%1 TYPE \%1
IF NOT EXIST \%1 ECHO \%1 does not exist

执行:
C:\>TEST2 AUTOEXEC.BAT
拖欠令运行结果及齐。

说明:
(1) IF EXIST 是因而来测试文件是否在的,格式为
IF EXIST [路径+文件名] 命令
(2)
test2.bat文本被的%1是参数,DOS允许传递9只批参数音讯给批处理文件,分别吗%1~%9(%0表示test2命令自己)
,这生点象编程中的实参和形参的关系,%1是形参,AUTOEXEC.BAT是实参。

变量

  • 概念

    是外存中的一律切开空间。用来保存程序运行期间的现数据。

    有名字,有类型

    出名字,就足以重复使用

    变量的类决定在变量占用多要命之内存空间。

  • 声明(定义)变量

    int x; 定义一个int类型的,名字叫x的变量

  • 变量的开头化

    第一不佳给变量叫起先化

    最好不用使没有起初化过的变量

#include <stdio.h>

int main() {

    int x;//x是变量名,int是变量的类型

    printf("x=%d\n", x); //x=1606422582,垃圾数据

    x = 10; //将10保存到x中,第一次赋值相当于初始化

    x = 20; //将20保存到x中,以后就叫给变量赋值

    int y = 30;//定义变量的同时初始化

    printf("y=%d\n", y);

    return 0;

}

==== willsort 编注

DOS没有 “允许传递9个批参数信息” 的限定,
参数的个数只汇合境遇命令执行长度及所调用命令处理能力的限制. 但是,
我们以批处理程序中, 在相同时刻只可以同时援引10只参数, 因为 DOS只叫有了

变量的类型

划分点儿种植:基本类型, 自定义类型

  1. 核心型

    整形:

    有号子:可以是正数,也足以是负数。

      int     // signed int

      short int  短整形

      long int  长整形

      long long int  

    无符号:只可以是正数,不克是负数

      unsigned int

      unsigned short int

      unsigned long int

      unsigned long long int

    特殊整形:

      char  

      unsigned char

    浮点型:全部凡出记号

      float

      double

      long double

  1. 从定义类型: struct,  union, enum
  2. 数据的保留(二进制)

    1Byte = 8bit

    1KB = 1024Byte

    1MB = 1024KB

    …

  1. 序列的区分

    short int               2Bytes          16bit

    int                        4Bytes          32bits

    long int                     8Bytes          64bit(64位系统)  
4Bytes(32位系统)

    long long int        16Bytes

 

  占用内存空间多,表示的多寡的限定就大

  注意:int类型前面来任何修饰时,int可以简单。

  bool
表示布尔运算,只含有true和false六只数值。需要以文书被入如下语句:
#include <stdbool.h>

%0~%9及时十单参数引用符.

3) 更进一步的,建立一个誉为也TEST3.BAT的公文,内容如下:
@echo off
IF “%1” == “A” ECHO XIAO
IF “%2” == “B” ECHO TIAN
IF “%3” == “C” ECHO XIN

只要运行:
C:\>TEST3 A B C
屏幕上会师显:
XIAO
TIAN
XIN

如若运行:
C:\>TEST3 A B
屏幕及会来得
XIAO
TIAN

以是令执行进程遭到,DOS会将一个空字符串指定为参数%3。

2、IF-ERRORLEVEL

立TEST4.BAT,内容如下:
@ECHO OFF
XCOPY C:\AUTOEXEC.BAT D:\
IF ERRORLEVEL 1 ECHO 文件拷贝败北
IF ERRORLEVEL 0 ECHO 成功拷贝文件

下一场实施文书:
C:\>TEST4

若文件拷贝成功,屏幕就会师显”成功拷贝文件”,否则即便谋面呈现”文件拷贝失利”。

IF ERRORLEVEL
是用来测试其的达标一个DOS命令的再次回到值的,注意才是达标一个令的回值,而且回去值必须随从深到多少程序顺序判断。
所以下的批判处理公事是错的:

@ECHO OFF
XCOPY C:\AUTOEXEC.BAT D:\
IF ERRORLEVEL 0 ECHO 成功拷贝文件
IF ERRORLEVEL 1 ECHO 未找到拷贝文件
IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拷贝操作
IF ERRORLEVEL 3 ECHO 预置错误阻止文件拷贝操作
IF ERRORLEVEL 4 ECHO 拷贝过程遭到描绘盘错误

不论是拷贝是否成,前面的:

勿找到拷贝文件
用户通过ctrl-c中止拷贝操作
预置错误阻止文件拷贝操作
拷贝过程中描绘盘错误

犹拿显示出。

以下即是几乎单常用命令的重回值及其代表的义:

backup
0 备份成功
1 未找到备份文件
2 文件共享争持阻止备份完成
3 用户用ctrl-c中止备份
4 由于致命的一无是处而备份操作停顿

diskcomp
0 盘相比平
1 盘相比差
2 用户通过ctrl-c中止相比操作
3 由于致命的不当而相比较操作停顿
4 预置错误中止相比

diskcopy
0 盘拷贝操作成
1 非致命盘读/写错
2 用户通过ctrl-c结束拷贝操作
3 因致命的处理错误使盘拷贝中止
4 预置错误阻止拷贝操作

format
0 格式化成功
3 用户通过ctrl-c中止格式化处理
4 因致命之处理错误使格式化中止
5 在提示”proceed with format(y/n)?”下用户键入n截至

xcopy
0 成功拷贝文件
1 未找到拷贝文件
2 用户通过ctrl-c中止拷贝操作
4 预置错误阻止文件拷贝操作
5 拷贝过程遭到描绘盘错误

chkdsk
0 未找到错误
255 找到一个或者多单谬误

choice
0 用户以下ctrl+c/break
1 用户按下第一个键
255 检测及令执行吃的谬误条件
另 用户按下的有效字符在列表中之职务

defrag
0 零星压缩成
1 现身中错误
2 磁盘上从不空簇。要运行DEFRAG,至少要有一个空簇
3 用户用Ctrl+C退出了DEFRAG
4 出现经常错误
5 DEFRAG在读簇时撞错误
6 DEFRAG在形容簇时境遇错误
7 分配空间来错
8 内存错
9 莫充足空间来压缩磁盘碎片

deltree
0 成功地去一个目录

diskcomp
0 星星转悠如出一辙
1 发现不同
2 按CTRL+C 终止了相比
3 出现严重错误
4 出现初叶化错误

find
0 查找成功还至少找到了一个匹的字符串
1 查找成功而不曾找到匹配的字符串
2 查找中出现了错

keyb
0 键盘定义文件装入成功
1 使用了不法的键盘代码,字符集或语法
2 键盘定义文件充足或者未找到
4 键盘、监视器通讯时错
5 要求的字符集未备好

move
0 成功地动了指定的文书
1 发生了左

msav /N
86 检查及了病毒

replace
0 REPLACE成功地更迭或进入了文件
1 MS-DOS版本和REPLACE不兼容
2 REPLACE找不至来自文件
3 REPLACE找不交来自路或目标路径
5 不克存取要替换的公文
8 内存不够不能履行REPLACE
11 命令行句法错误

restore
0 RESTORE成功地光复了文本
1 RESTORE找不顶假使还原的文本
3 用户以CTRL+C终止苏醒过程
4 RESTORE因失实而止

scandisk
0 ScanDisk于它们检查的驱动器上不检测及其它不当
1 由于命令行的语法不对,不可知运作ScanDisk
2 由于内存用尽或发中错误,ScanDisk意外已
3 用户为ScanDisk中途离
4 举办盘面扫描时,用户决定提前退出
254 ScanDisk找到磁盘故障并都总体校正
255 ScanDisk找到磁盘故障,但决不可能全部校正

setver
0 SE电视机ER成功地形成了职责
1 用户指定了一个空头的指令开关
2 用户指定了一个非法的文本称
3 没有丰盛的体系内存来运行命令
4 用户指定了一个不法的版号格式
5 SE电视机ER在版本表中未找到指定的起
6 SETVER未找到SETVER.EXE文件
7 用户指定了一个野鸡的驱动器
8 用户指定了极致多的通令执行参数
9 SE电视机ER检测及丢了命执行参数
10 在读SE电视ER.EXE文件时,SE电视ER检测到发出误
11 SE电视ER.EXE文件损坏
12 指定的SE电视ER.EXE文件不援助版本表
13 版本表中一向不充足的半空中存放新的宗

数据类型

针对许内存区域,其值可变,变量有对应的路以及价值。

        
变量类型分为字符型char、整数型int、浮点型float/double、指针、结构、联合等品类。

#include <stdio.h>

int main() {

    float f=3.14;

    printf("f=%f\n", f);//f=3.140000

    double d=1.73;

    printf("d=%lf\n", d);//d=1.730000;默认都打印6位小数

    printf("f=%.2f\n", f);//保留两位小数

    printf("sizeof(float)=%ld\n", sizeof(float));

//表示数据的范围很大,内部使用了科学计数法来表示

    //3.14:3.14×10^0

    //0.00314:3.14×10^-3

    //省略无意义0

    f=.314;//f=0.314000

    f=3.;//f=3.000000

    f=3.14E-3;//3.14×10^-3;

    printf("f=%f\n", f);//f=0.003140

    

    f=3.14F;//float类型的字面值后面加f,F

    f=3.14f;

    f=0x314F;//F代表十六进制的F

    return 0;

}

  

 

  图片 3

 

 

14 在写SE电视机ER.EXE文件时SE电视ER检测及闹误

3、IF STRING1 == STRING2

建TEST5.BAT,文件内容如下:
@echo off
IF “%1” == “A” FORMAT A:

执行:
C:\>TEST5 A
屏幕及便应运而生是否将A:盘格式化的始末。

小心:为了预防参数为空的状态,一般会将字符串用双引号(或者其他符号,注意勿可以采纳保留符号)括起来。
如:if [%1]==[A] 或者 if %1*==A*

5、GOTO

树TEST6.BAT,文件内容如下:
@ECHO OFF
IF EXIST C:\AUTOEXEC.BAT GOTO _COPY
GOTO _DONE
:_COPY
COPY C:\AUTOEXEC.BAT D:\
:_DONE

注意:
(1) 标号前是ASCII字符的冒号”:”,冒号与标明之间莫可以出空格。
(2) 标号的命名规则和公事称的命名规则平等。
(3)
DOS援助可是充分八号字符的标,当无法区分两独号时,将越反至如今的一个号。

==== willsort 编注

1)标号为称作标签(label)
2)标签不克坐多数底非字母数字字符起头, 而文件称中则好动用多

3)当不能区分六只标签时, 将超反到地方最负前的竹签

6、FOR

建立C:\TEST7.BAT,文件内容如下:
@ECHO OFF
FOR %%C IN (*.BAT *.TXT *.SYS) DO TYPE %%C

运行:
C:\>TEST7

行下,屏幕及会以C:盘根目录下所起坐BAT、TXT、SYS为扩张名的文书内容映现出(不包括隐藏文件)。

[technorati relative tag]

 

著作来源百度文库 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图