Oracle_PL-SQL入门教程(经典)

Oracle_PL-SQL入门教程(经典)
Oracle_PL-SQL入门教程(经典)

SQL语言入门教程

第一课简介

SQL是英文Structured Query Language的缩写,意思为结构化查询语言。

SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。

目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select, Insert, Update, Delete, Create, 以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。

下面,我们就来详细介绍一下SQL语言的基本知识。

一个典型的关系型数据库通常由一个或多个被称作表格的对象组成。数据库中的所有数据或信息都被保存在这些数据库表格中。数据库中的每一个表格都具有自己唯一的表格名称,都是由行和列组成,其中每一列包括了该列名称,数据类型,以及列的其它属性等信息,而行则具体包含某一列的记录或数据。以下,是一个名为太平洋网络学院的数据库表格的实

该表格中“栏目”,“用户群”就是两个不同的列,而表格中的每一行则包含了具体的表格数据。

1. 创建表格

2. 数据查询

3. 向表格中添加、更新、删除记录

4. 删除数据库表格

第二课创建表格

SQL语言中的create table语句被用来建立新的数据库表格。create table语句的使用格式如下:

create table tablename

(column1 data type,

column2 data type,

column3 data type);

如果用户希望在建立新表格时规定列的限制条件,可以使用可选的条件选项:

create table tablename

(column1 data type [constraint],

column2 data type [constraint],

column3 data type [constraint]);

举例如下:

create table employee

(firstname varchar(15),

lastname varchar(20),

age number(3),

address varchar(30),

city varchar(20));

简单来说,创建新表格时,在关键词create table后面加入所要建立的表格的名称,然后在括号内顺次设定各列的名称,数据类型,以及可选的限制条件等。注意,所有的SQL 语句在结尾处都要使用“;”符号。

使用SQL语句创建的数据库表格和表格中列的名称必须以字母开头,后面可以使用字母,数字或下划线,名称的长度不能超过30个字符。注意,用户在选择表格名称时不要使用SQL语言中的保留关键词,如select, create, insert等,作为表格或列的名称。

数据类型用来设定某一个具体列中数据的类型。例如,在姓名列中只能采用varchar或char的数据类型,而不能使用number的数据类型。

SQL语言中较为常用的数据类型为:

char(size):固定长度字符串,其中括号中的size用来设定字符串的最大长度。Char类型的最大长度为255字节。

varchar(size):可变长度字符串,最大长度由size设定。

number(size):数字类型,其中数字的最大位数由size设定。

Date:日期类型。

number(size,d):数字类型,size决定该数字总的最大位数,而d则用于设定该数字在小数点后的位数。

最后,在创建新表格时需要注意的一点就是表格中列的限制条件。所谓限制条件就是当向特定列输入数据时所必须遵守的规则。例如,unique这一限制条件要求某一列中不能存在两个值相同的记录,所有记录的值都必须是唯一的。除unique之外,较为常用的列的限制条件还包括not null和primary key等。not null用来规定表格中某一列的值不能为空。primary key则为表格中的所有记录规定了唯一的标识符。

第三课数据查询

在众多的SQL命令中,select语句应该算是使用最频繁的。select语句主要被用来对数据库进行查询并返回符合用户查询标准的结果数据。Select语句的语法格式如下:

select column1 [, column2,etc] from tablename

[where condition];

([] 表示可选项)

select语句中位于select关键词之后的列名用来决定那些列将作为查询结果返回。用户可以按照自己的需要选择任意列,还可以使用通配符“*”来设定返回表格中的所有列。

select语句中位于from关键词之后的表格名称用来决定将要进行查询操作的目标表格。 Select语句中的where可选从句用来规定哪些数据值或哪些行将被作为查询结果返回或显示。

在where条件从句中可以使用以下一些运算符来设定查询标准:

= 等于

> 大于

< 小于

>= 大于等于

<= 小于等于

<> 不等于

除了上面所提到的运算符外,LIKE运算符在where条件从句中也非常重要。LIKE运算符的功能非常强大,通过使用LIKE运算符可以设定只选择与用户规定格式相同的记录。此外,我们还可以使用通配符“%”用来代替任何字符串。举例如下:

select firstname, lastname, city

from employee

where firstname LIKE ‘E%’;

(注意,字符串必须被包含在单括号内)

上述SQL语句将会查询所有名称以E开头的姓名。或者,通过如下语句:

select * from employee

where firstname = ‘May’;

查询所有名称为May的行。

第四课向表格中添加、更新、删除记录

添加新记录

SQL语言使用insert语句向数据库表格中插入或添加新的数据行。Insert语句的使用格式如下:

insert into tablename

(first_column,https://www.360docs.net/doc/f411586753.html,st_column)

values (first_value,https://www.360docs.net/doc/f411586753.html,st_value);

例如:

insert into employee

(firstname, lastname, age, address, city)

values (‘Li’,’Ming’,45, ‘No.77 Changan Road’,’Beijing’);

简单来说,当向数据库表格中添加新记录时,在关键词insert into后面输入所要添加的表格名称,然后在括号中列出将要添加新值的列的名称。最后,在关键词values的后面按照前面输入的列的顺序对应的输入所有要添加的记录值。

更新记录

SQL语言使用update语句更新或修改满足规定条件的现有记录。update语句的格式为: update tablename

set columnname = newvalue [, nextcolumn = newvalue2...]

where columnname OPERA TOR value [and|or column OPERA TOR value];

例如:

update employee

set age = age+1

where first_name= ‘Mary’and last_name= ‘Williams’;

使用update语句时,关键一点就是要设定好用于进行判断的where条件从句。

删除记录

SQL语言使用delete语句删除数据库表格中的行或记录。Delete语句的格式为:

delete from tablename

where columnname OPERA TOR value [and|or column OPERA TOR value];

例如:

delete from employee

where lastname = May;

简单来说,当需要删除某一行或某个记录时,在delete from关键词之后输入表格名称,然后在where从句中设定删除记录的判断条件。注意,如果用户在使用delete语句时不设定where从句,则表格中的所有记录将全部被删除。

第五课删除数据库表格

在SQL语言中使用drop table命令删除某个表格以及该表格中的所有记录。drop table

命令的使用格式为:

drop table tablename;

例如:

drop table employee;

如果用户希望将某个数据库表格完全删除,只需要在drop table命令后输入希望删除的表格名称即可。drop table命令的作用与删除表格中的所有记录不同。删除表格中的全部记录之后,该表格仍然存在,而且表格中列的信息不会改变。而使用drop table命令则会将整个数据库表格的所有信息全部删除。

以上,我们对SQL语言主要的命令和语句进行了较为详细的介绍。应该说SQL语句的语法结构和风格还是相当简单和直观的,只要用户结合实践多加练习,一定会在短期内迅速掌握。

以Store_Information数据表为例,我们可以在GROUP BY一节中所使用的SQL命令中设置如下字段和数据表别名:

SELECT A1.store_name Store, SUM(Sales) "Total Sales"

FROM Store_Information A1

GROUP BY A1.store_name

查询结果显示为:

Store Total Sales

Los Angeles $1800

San Diego $250

Boston $700

SQL循序渐进

SQL循序渐进(目录)

SQL循序渐进(1)-------介绍SQL

SQL循序渐进(2)-------表的基础知识

SQL循序渐进(3)-------数据检索

SQL循序渐进(4)-------创建表

SQL循序渐进(5)-------插入数据到表

SQL循序渐进(6)-------删除表

SQL循序渐进(7)-------更新记录

SQL循序渐进(8)-------删除记录

SQL循序渐进(9)-------SELECT语句

SQL循序渐进(10)------合计函数

SQL循序渐进(11)------GROUP BY子句

SQL循序渐进(12)------HAVING子句

SQL循序渐进(13)------ORDER BY子句

SQL循序渐进(14)------组合条件和布尔运算符

SQL循序渐进(15)------IN 和BETWEEN 条件运算符

SQL循序渐进(16)------数学运算符

SQL循序渐进(17)------JOIN子句

SQL循序渐进(18)------索引

SQL循序渐进(19)------DISTINCT和排除复制

SQL循序渐进(20)------Aliases 、In以及子查询

SQL循序渐进(21)------更多的子查询

SQL循序渐进(22)------EXISTS 和ALL

SQL循序渐进(23) ------UNION 和外部连接

SQL循序渐进(24) ------嵌入SQL

(1)介绍SQL

SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、Sybase、Microsoft SQL Server、Access、Ingres等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如"Select"、"Insert"、"Update"、"Delete"、"Create"和"Drop"常常被用于完成绝大多数数据库的操作。

但是,不象其它的语言,如C、Pascal等,SQL没有循环结构(比如if-then-else、do-while)以及函数定义等等的功能。而且SQL只有一个数据类型的固定设置,换句话说,你不能在

使用其它编程语言的时候创建你自己的数据类型。

SQL功能强大,但是概括起来,它可以分成以下几组:

DML(Data Manipulation Language,数据操作语言):用于检索或者修改数据;

DDL(Data Definition Language,数据定义语言):用于定义数据的结构,比如创建、修改或者删除数据库对象;

DCL(Data Control Language,数据控制语言):用于定义数据库用户的权限。

DML组可以细分为以下的几个语句:

SELECT:用于检索数据;

INSERT:用于增加数据到数据库;

UPDATE:用于从数据库中修改现存的数据

DELETE:用于从数据库中删除数据。

DDL语句可以用于创建用户和重建数据库对象。下面是DDL命令:

CREATE TABLE

ALTER TABLE

DROP TABLE

CREATE INDEX

DROP INDEX

DCL命令用于创建关系用户访问以及授权的对象。下面是几个DCL命令:

ALTER PASSWORD

GRANT

REVOKE

CREATE SYNONYM

为了让你对SQL有一个直观的认识,下面先给出一个简单SQL语句的例子:

我们使用SQL语句来从Employees中检索Department ID为CS的姓名:

SELECT https://www.360docs.net/doc/f411586753.html,

FROM Employees

WHERE Employees.DeptID = "CS"

可能你现在一开始不太理解这些语句,也许你会一头雾水,不要紧的,通过本教程的学习后,你会发现这段语句是多么的普通。为了不让你困惑,下面我也进行一番解释:

先对FROM子句吧,语句中的FROM Employees意思是从Employees表中检索数据。

而语句WHERE Employees.DeptID = "CS"意思是检索Employees的DeptID列为”CS”的行,这样SQL语句检索的结果将是DeptID为CS的列的所有数据,比如:

好吧,开始我们下一节的教程-------表的基本知识。

(2)表的基础知识

关系数据库通常包含多个表。数据库实际上是表的集合,数据库的数据或者信息都是存储在表中的。表是对数据进行存储和操作的一种逻辑结构,每一个表都代表一个对用户意义的对象。例如,一个公司数据库中,会有雇员表、部门表、库存表、销售表、工资表等等。我们经常见到的成绩表就是一种表,它是有行和列组成的,我们并且可以通过名字来识别数据。列包含了列的名字、数据类型以及列的其它属性;行包含了列的记录或者数据。下面给出一个成绩单,其中姓名、语文、数学、英语都是列,而行包含了这个表的数据,即每个人的各科成绩:

(3)数据检索

在SQL中SELECT语句通常用于检索数据库,或者检索满足你设定条件的数据,以下是简单的SELECT语句的格式:

select "column1"[,"column2",etc] from "tablename"

[where "condition"];

[] = optional

其中列的名字跟着SELECT关键字,它决定了哪一列将被作为结果返回。你可以任意指定多个列,或者你可以使用"*"来选择所有的列。

表的名字是紧跟着FROM关键字的,它指出了哪个表格将作为最后结果被查询。

而WHERE子句(可选)指出哪个数据或者行将被返回或者显示,它是根据关键字WHERE 后面描述的条件而来的。

在WHERE子句中可以有以下的条件选择:

= 等于

> 大于

< 小于

>= 大于等于

<= 小于等于

<> 不等于

LIKE 参见以下注释

注释:LIKE 模式匹配操作符同样可以使用在WHERE子句的条件条件中。LIKE是一个功

能强大的操作符,它可以让你选择你"喜欢"指定的行。百分号"%" 可以被用来匹配任何可能的字符,它可以出现在指定字符的前面或者后面,例如:

select first, last, city

from empinfo

where first LIKE 'Er%';

以上这条SQL语句将会匹配任何名字以'Er'开始的名字,这里必须使用单引号。

或者你也可以使用"%"在字符的前面,例如:

select first, last

from empinfo

where last LIKE '%s';

这条SQL语句将会匹配任何名字以's'结尾的名字。这个"%"的作用就跟DOS命令的"*"号很相似。

select * from empinfo

where first = 'Eric';

以上的SQL语句只选择first名字为'Eric'的行。

(4)创建表

这个create table语句是用于创建一个新的表格。以下是一个简单创建表格语句的格式:create table "tablename"

("column1" "data type",

"column2" "data type",

"column3" "data type");

如果你想使用可选的约束,创建表格的格式为:

create table "tablename"

("column1" "data type" [constraint],

"column2" "data type" [constraint],

"column3" "data type" [constraint]);

[ ] = optional

这里注意:你可以任意创建多列的表格,这个条件是可选的。

为了更好的理解,下面举个例子:

create table employee

(first varchar(15),

last varchar(20),

age number(3),

address varchar(30),

city varchar(20),

state varchar(20));

为了创建一个新表格,你可以在关键字create table之后跟着表的名字,然后一个圆左括号”(”,然后是第一列的名字,再是这一列的数据类型,接着是任意的可选约束,最后是圆右括号”)”。确保在开始表格内容之前使用圆左括号并且在表的最后一列定义之后使用圆右括号是相当重要的。你还要保证每一个列定义之间有逗号分隔。最后在SQL语句结束时候加上分号";"。

表格和列名必须以字母开头,第二个字符开始可以是字母、数字或者下划线,但是要保证名

字的总长度不要超过30个字符。在定义表格和列名不要使用不要使用SQL预定的用于表格或者列名的关键字(比如"select"、"create"、"insert"等等),以避免错误的发生。

数据类型是指在特定的列使用什么样数据的类型。如果一个列的名字为"Last_Name",它是用来容纳人名的,所以这个特定列就应该采用"varchar" (variable-length character,变长度的字符型) 数据类型。

以下是几种常见的数据类型:

char(size) :固定长度的字符串型。Size是圆括号中指定的参数,它可以由用户随意设置,但是不能超过255个字节。

varchar(size) :变长度的字符串型。它的最大长度是由括号中的参数size设定的。

number(size):数值型。最大数字的位数由括号中的参数size设置。

date :日期数值型。

number(size,d) :数值型。它的最大数字的位数由括号中的参数sieze设定,而括号中的参数d是设置小数点的位数。

什么是约束呢?当表被创建的时候,可以一列也可以多列共用一个约束。约束是一个跟列有关的基本准则,返回的数据必须遵循这个准则。下面举个例子,一个约束指定在一列中不能有两个记录共用一个数值。它们必须单独的。其它两个流行的约束是:"not null",它设置了列不能留空白,即一定要有数据;以及"primary key"(主键),主键约束定义了表中每一个记录(或行)的唯一标识。所有的这些将在以后的教程中再作进一步阐述。

好吧,也许你已经有跃跃欲试的冲动了。作为本节练习,下面我们自己来设计和创建表格。你可以开始创建一个公司的雇员表格。你需要创建一个包含firstname、lastname、title、age 和salary的表格。

(5)插入数据到表

Insert语句用于往表格中插入或者增加一行数据,它的格式为:

insert into "tablename"

(first_column,https://www.360docs.net/doc/f411586753.html,st_column)

values (first_value,https://www.360docs.net/doc/f411586753.html,st_value);

[] = optional

简单举个例子:

insert into employee

(first, last, age, address, city)

values ('Luke', 'Duke', 45, '2130 Boars Nest', 'Hazard Co');

这里要注意:每一个字符窜都要用单引号括起来。

为了往表中插入数据,要在关键字insert into之后紧跟着表名,然后是左圆括号,接着是以逗号分开的一系列的列名,再是一个右圆括号,然后在关键字values之后跟着一系列用圆括号括起的数值。这些数值是你要往表格中填入的数据,它们必须与指定的列名相匹配。字符串笔译用单引号括起来,而数字就不用。在上面的例子中,'Luke'必须与列first相匹配,而45必须与列age相匹配。

假如你想往employee表格中插入以下数据;

Zhang Weiguo,28,北京601信箱,北京

那么你要使用以下的SQL语句:

insert into employee

(first, last, age, address, city)

values (' Zhang', ' Weiguo' ,28, '北京601信箱', '北京');

(6)删除表

Drop table命令用于删除一个表格或者表中的所有行。其语法格式为:

drop table "tablename"

下面举个例子:

drop table employee;

为了删除整个表(包括所有的行),可以使用drop table命令后加上tablename。Drop table 命令跟从表中删除所有记录是不一样的:

删除表中的所有记录是留下表格(只是它是空的)以及约束信息;而drop table是删除表的所有信息,包括所有行、表格以及约束信息等等。

(7)更新记录

Update语句用于更新或者改变匹配指定条件的记录,它是通过构造一个where语句来实现的。其语句格式如下:

update "tablename"

set "columnname" = "newvalue"[,"nextcolumn" = "newvalue2"...]

where "columnname" OPERATOR "value" [and|or "column" OPERATOR "value"];

[] = optional

下面举个例子来说明:

update phone_book

set area_code = 623

where prefix = 979;

以上语句是在phone_book表中,在prefix=979的行中将area_code设置为623。

update phone_book

set last_name = 'Smith', prefix=555, suffix=9292

where last_name = 'Jones';

而以上的这段语句是在phone_book中,在last_name= 'Jones'的行中将last_name 设置为

'Smith', prefix为555, suffix为9292。

update employee

set age = age+1

where first_name='Mary' and last_name='Williams';

这段语句是在employee表中,在first_name='Mary' 和last_name='Williams'的行中将age加1。作为每课一练,你在结束本教程之后要好好作以下的练习:

1 因为Jonie Weber 已经跟Bob Williams结婚,所以它需要将它的last名更新为

Weber-Williams。

2 Dirk Smith的生日是今天,所以他的年龄应该加1。

3 所有的秘书都叫做"Administrative Assistant".所以要将所有的标题标题都相应地修改。

就作这几个练习,千万不可大意哟。

(8)删除记录

Delete语句是用来从表中删除记录或者行,其语句格式为:

delete from "tablename"

where "columnname" OPERATOR "value" [and|or "column" OPERATOR "value"];

[ ] = optional

下面还是举个例子:

delete from employee;

这条语句没有where语句,所以它将删除所有的记录,因此如果没有使用where的时候,要千万小心。

如果你只要删除其中一行或者几行,可以参考以下的语句:

delete from employee

where lastname = 'May';

这条语句是从emplyee表中删除lastname为'May'的行。

delete from employee

where firstname = 'Mike' or firstname = 'Eric';

这条语句是从emplyee表中删除firstname为'Mike'或者'Eric'的行。

为了从表中删除一个完整的记录或者行,就直接在"delete from"后面加上表的名字,并且利用where指明符合什么条件的行要删除即可。如果你没有使用where子句,那么表中的所有记录或者行将被删除。

(9)SELECT语句

在上面的教程中已经有用到SELECT语句。在本节教程中将详细对它进行阐述。SELECT语句是SQL的核心,在你的SQL语句中可能用的最多的就是SELECT语句了。由于大量的选项可以用于SELECT语句,所以整个教程好象就是围这SELECT语句转。当我们构造SQL查询语句(利用了SELECT语句)的时候,认识所有的可能选项和最好的或者最有效率的方法来实现是很有用的。这个教程将为你提供这些技能。

SELECT语句用于查询数据库并检索匹配你指定条件的选择数据。SELECT语句有五个主要的子句子你可以选择,而FROM是唯一必须的子句。每一个子句有大量的选择项、参数等等。这些子句将罗列在下面,而且它们每一个都将在以后的教程有更为详细的描述。以下是SELECT语句的格式:

SELECT [ALL | DISTINCT] column1[,column2]

FROM table1[,table2]

[WHERE "conditions"]

[GROUP BY "column-list"]

[HAVING "conditions]

[ORDER BY "column-list" [ASC | DESC] ]

下面举个例子:

SELECT name, age, salary

FROM employee

WHERE age > 50;

上面的这个语句将从employee表中选择age大于50的所有的name、age和salary列的数值。

注意:一定要在SQL语句末尾加上一个分号。这个分号提示SQL语句已经结束并准备被解释。

SELECT name, title, dept

FROM employee

WHERE title LIKE 'Pro%';

上面的语句是从employee表中选择title是以'Pro'为开头的name、title和dept列中的所有行或者数值。

另外ALL和DISTINCT也是SQL中的关键字,它们用于在你的查询结果中选择ALL(缺省)或者"distinct"或者单一记录。如果你想在指定的列中检索单一记录,你可以使用"DISTINCT" 关键子。因为DISTNCT 将会丢弃所有你在SELECT指定的列复制的记录,比如:

SELECT DISTINCT age

FROM employee_info;

这条语句将返回所有在employee_info表中单一的age数据。

而ALL就将显示所有指定的类,包括所有的复制数据。在没有指定的时候,这个ALL关键字是缺省的。

(10)合计函数

所有的合计函数如下表所示:

合计函数用于从SELECT语句中计算一个”返回列的数据”。它们是总结了所选数据列的结果。虽然它们需要"GROUP BY"子句(后面一个教程介绍),但是这些函数也可以在不用使用"GROUP BY"子句的情况被使用,比如:

SELECT AVG(salary)

FROM employee;

这条语句将返回单一的结果,它包含了从employee表中所有salary列数据的平均值。为了更好的理解,我们再举个例子:

SELECT AVG(salary)

FROM employee;

WHERE title = 'Programmer';

以上这条语句将返回employee表中所有title列为'Programmer'的数据的平均值。

下面的例子中使用的语句跟其它合计函数有点不用,因为没有一个类被指定给COUNT函数。这条语句实际上将返回employee表的行数,如下:

SELECT Count(*)

FROM employees;

最后给出本节教程的配套练习:

1)作一个公司的销售表items_ordered,里面有price、product和amount。

从items_ordered表中选择price最大的数据。这里提示:使用MAX函数。

2) 计算items_ordered表中的行数。

(11)GROUP BY子句

GROUP BY子句

首先讲讲GROUP BY 子句语法:

SELECT column1, SUM(column2)

FROM "list-of-tables"

GROUP BY "column-list";

这个GROUP BY子句将集中所有的行在一起,它包含了指定列的数据以及允许合计函数来计算一个或者多个列。当然最好解释的方法是给出一个例子啦:

假设我们将从employee表中搜索工资最高的列,可以使用以下的SQL语句:

SELECT max(salary), dept

FROM employee

GROUP BY dept;

这条语句将在每一个单独的部门中选择工资最高的工资。结果他们的salary和dept将被返回。

(12)HA VING子句

HA VING子句

下面先给出HA VING子句的语法:

SELECT column1, SUM(column2)

FROM "list-of-tables"

GROUP BY "column-list"

HA VING "condition";

这个HA VING子句允许你为每一个组指定条件,换句话说,可以根据你指定的条件来选择行。如果你想使用HA VING子句的话,它应该处再GROUP BY子句之后。

下面将以一个例子来解释HA VING子句。假设我们的employee表中包含雇员的name、departmen、salary和age。如果你想为每个部门中每个雇员选择平均工资的话,你可以使用下面的SQL语句:

SELECT dept, avg(salary)

FROM employee

GROUP BY dept;

当然,如果你还想只计算和显示salary大于20000的平均工资的话,你还可以加上HA VING 子句:

SELECT dept, avg(salary)

FROM employee

GROUP BY dept

HA VING avg(salary) > 20000;

(13)ORDER BY子句

ORDER BY子句

ORDER BY子句的语法为:

SELECT column1, SUM(column2)

FROM "list-of-tables"

ORDER BY "column-list" [ASC | DESC];

[ ] = optional

ORDER BY是一个可选的子句,它允许你根据指定要order by的列来以上升或者下降的顺序来显示查询的结果。例如:

ASC = Ascending Order –这个是缺省的

DESC = Descending Order

下面举个例子:

SELECT employee_id, dept, name, age, salary

FROM employee_info

WHERE dept = 'Sales'

ORDER BY salary;

这条SQL语句将从employee_info表中列dept等于'Sales'选择employee_id,、dept、name、age和salary,并且根据他们的salary按升序的顺序来列出检索结果。

如果你想对多列排序的话,那么在列与列之间要加上逗号,比如:

SELECT employee_id, dept, name, age, salary

FROM employee_info

WHERE dept = 'Sales'

ORDER BY salary, age DESC;

(14)组合条件和布尔运算符

以下的SQL语句中就含有组合条件:

SELECT column1, SUM(column2)

FROM "list-of-tables"

WHERE "condition1" AND "condition2";

AND运算符可以在WHERE子句中连接两个或者多个条件。AND条件的两旁必须都为true (真),即两个条件都同时满足的时候,这些行才将被显示。

当然,你也可以使用OR运算符,它也可以在WHERE子句中连接两个或者多个条件。但是,只要OR运算符两旁有一个为true的时候条件就满足了,因此行才会被显示。所以你使用OR运算符的时候,可以是OR运算符两旁只有一个为true或者两旁都为true。

下面举个例子吧:

SELECT employeeid, firstname, lastname, title, salary

FROM employee_info

WHERE salary >= 50000.00 AND title = 'Programmer';

这条SQL语句是从employee_info表中选择salary大于等于50000.00并且title等于'Programmer'的列employeeid、firstname、lastname、title和salary。此时必须AND运算符两旁的条件都为真,行才会最为检索结果返回。如果其中有一个条件为假,那么就什么都没有显示。

你可以使用圆括号将条件括起来,虽然它们也不一定是必须的,但是括起来看起来更清晰一些,这是一个编程习惯的问题。比如:

SELECT employeeid, firstname, lastname, title, salary

FROM employee_info

WHERE (salary >= 50000.00) AND (title = 'Programmer');

下面再举个例子:

SELECT firstname, lastname, title, salary

FROM employee_info

WHERE (title = 'Sales') OR (title = 'Programmer');

这条语句将从employee_info表中选择title等于'Sales'或者等于'Programmer'的列firstname、lastname, title和salary。

(15)IN 和BETWEEN 条件运算符

下面是IN条件运算符的SQL语句:

SELECT column1, SUM(column2)

FROM "list-of-tables"

WHERE column3 IN (list-of-values);

下面是BETWEEN条件运算符的SQL语句:

SELECT column1, SUM(column2)

FROM "list-of-tables"

WHERE column3 BETWEEN value1 AND value2;

实际上,IN条件运算符是一个设置成员测试运算符,也就是说,它用于测试是否一个数值处在IN关键字之后提供的数值之中。举个例子如下:

SELECT employeeid, lastname, salary

FROM employee_info

WHERE lastname IN ('Hernandez', 'Jones', 'Roberts', 'Ruiz');

这条语句是从employee_info表中选择lastname等于Hernandez、Jones、Roberts或者Ruiz 名字之一的列employeeid、lastname和salary。如果它在其中就将返回行。

IN条件运算符可以使用混合条件来替代,比如你可以使用等号运算符或者使用OR运算符等等,但是结果是一样的,例如:

SELECT employeeid, lastname, salary

FROM employee_info

WHERE lastname = 'Hernandez' OR lastname = 'Jones' OR lastname = 'Roberts' OR lastname = 'Ruiz';

你可以观察到,利用IN运算符时语句会更加简短并且容易读,特别是在你测试两个或者三个数值以上的时候尤为突出。

当然你也可以使用NOT IN 来在你的列表中排除行的。

而BETWEEN条件运算符是用与测试一个数值是否处在BETWEEN关键字两边指定数值的中间,比如:

SELECT employeeid, age, lastname, salary

FROM employee_info

WHERE age BETWEEN 30 AND 40;

这条SQL语句是从employee_info表中选择age处于30到40岁之间(包括30岁和40岁)的列employeeid、age、lastname和salary。

这条语句同样可以不用BETWEEN运算符,而使用混合条件来替代,例如:

SELECT employeeid, age, lastname, salary

FROM employee_info

WHERE age >= 30 AND age <= 40;

当然,你也可以类似于NOT IN的方法,使用NOT BETWEEN来排除一些数据。(16)数学运算符

标准的ANSI SQL-92支持下面四个基本的算术运算符:

其中求余运算符决定除法的余数。这个运算符不是ANSI SQL支持的,但是,绝大多数的数据库支持他。下面是一些有用的数学函数,因为可能要用到它,所以我这里要集中提一下。在ANSI SQL-92中不支持这些函数,但是它们可能对于某些特殊的RDBMS是有效的。然而它们对于几个主要的数据库系统都是有效的。下面就说说这些数学函数吧:

SELECT round(salary), firstname

FROM employee_info

上面这条语句将从employee_info表中选择salary最接近的数以及firstname列。(17)JOIN子句

不知你有没有发现直到现在我们利用SELECT语句来检索的时候只能从一个表中进行。如果你想从两个表或者更多的表中进行检索,该怎么办呢?好在我们可以使用SQL和关系数据库系统的一个很有用的特性,即"Join"。为了简单说明,实际上"Join"就是使得关系数据库系统相关的东东。"Join"允许你从两个表或者更多的表连接数据进行数据检索,而只需要利用一个SELECT语句。如果在FROM关键字之后有多个表的话,"Join"可以在SQL SELECT 语句中识别它们。

下面举个例子:

SELECT "list-of-columns"

FROM table1,table2

WHERE "search-condition(s)"

"Join"

通过示范当你只处理一个表的时候会发生什么事情可以使得"Join"的解释更简单,所以这里我没有使用"Join"。这个单一的数据库有事也被称为"flat table"(平表)。现在你有一个表的数据库用来检索所有顾客的信息以及他们从你的商店买了什么,下面就是这个表的所有列:

每次一个新行被插入到表中,所有的列都将被更新,这样就导致了不必要的”多余数据”。比如,每次Jenny买东西,下面的行都将被插入到表中:

为了避免”多余数据”,一个最好的方法:让数据库有两个表:其中一个用来对顾客保持跟踪;另外一个用来对他们买什么东西保持跟踪。即有"Customer_info" 表和"Purchases"表:

现在开始,不管顾客什么时候进行重复的购物,只有第二个表"Purchases" 需要更新。这样我们就减少了多余的数据,也就是说我们规格化了这个数据库。

你仔细点就会发现两个表中还是有一个"cusomer_number"列是相同的。这个列包含了单独的顾客号,它将用来JOIN(连接)两个表。下面举个例子来使用这两个表,假如你想搜索顾客的名字以及他们所买的东西,你可以使用以下的语句来实现:

SELECT customer_info.firstname, customer_https://www.360docs.net/doc/f411586753.html,stname, purchases.item

FROM customer_info, purchases

WHERE customer_info.customer_number = purchases.customer_number;

特殊的"Join"有为"Inner Join" 或者"Equijoin",这是一个最常见的"Join"类型,以后我们经常用使用到或者看到。

这里要注意每列总是在表名之前,这却也不是必需的。这是一个好的练习对于帮助你澄清列后面跟着表的认识有很大帮助。如果两个表之间有一个相同的列,它就是必须的。我这里推荐在使用JOIN的时候最好在所有列之后加上表名。

注意;上面描述的这个语法将在绝大多数的数据库系统起作用,本教程的也是一样。但是结果你会发现你上面的语句并不起作用,请仔细检查一下吧。

当然你可以试一试修改以上的代码,你可以使用JOIN(ANSI SQL-92语法规范中的INNER JOIN):

SELECT customer_info.firstname, customer_https://www.360docs.net/doc/f411586753.html,stname, purchases.item

FROM customer_info INNER JOIN purchases

ON customer_info.customer_number = purchases.customer_number;

再举另外一个例子:

SELECT employee_info.employeeid, employee_https://www.360docs.net/doc/f411586753.html,stname, employee_https://www.360docs.net/doc/f411586753.html,ission FROM employee_info, employee_sales

WHERE employee_info.employeeid = employee_sales.employeeid;

这个例子将从employee_info和employee_sales表中选择当employee_info表的employeeid 等于employee_sales表的employeeid的employeeid 、emplyee_info表中lastname以及employee_sales表中的comission数值。

从上面的例子中可以发现利用JION的语句比价简练。既然有这样的有点,我们何乐而不为呢?

(18)索引

索引允许DBMS更快地访问数据。系统创建了这个内部地数据结构(即索引),它导致当查询以列为索引的时候搜索行,这样查询会快得多。这个索引对于给定列索引数值的时通知DBMS找到表中某一行,这有点象书的索引,它告诉你对于给定的字你能找到哪一页。下面让我们在AntiqueOwners列中为OwnerID创建索引:

CREA TE INDEX OID_IDX ON ANTIQUEOWNERS (OWNERID);

下面语句是为名字创建所以:

CREA TE INDEX NAME_IDX ON ANTIQUEOWNERS (OWNERLASTNAME, OWNERFIRSTNAME);

为了删除索引,你可以利用DROP:

DROP INDEX OID_IDX;

就象前面教程中,我们也可以"drop"(删除)一个表。上面第二个例子中,是在两列上创建索引的。

有些DBMS不强迫要求主键,换句话说就是,类的唯一性不会自动强制。这是什么意思呢,好象听起来云里雾里的。好吧,再给你举个例子,如果你象插入另外一行到AntiqueOwners表中,比如这个OwnerID是02,有些系统可以让你这样做即使我们要求所有行的数值都要是不同的。为了避免两行有相同的值,我们有一种方法来克服,就是在列上创建唯一的索引,而在这个列上我们需要它成为主键,这样就可以系统不会出现复制的情况:CREA TE UNIQUE INDEX OID_IDX ON ANTIQUEOWNERS (OWNERID);

(19)DISTINCT和排除复制

假如你象列出所有买过古董的ID和名字,很明显,你可能会将所有的顾客都列出来而没有考虑有些顾客是买过多讲古董的,所以这时你会发现有些数据是重复的。这就意味着你需要通知SQL来排除复制的行,而不管这个顾客买过多少个古董只需要列出一次即可。为了实现这个目的,你可以使用DISTINCT关键字。

首先我们需要为AntiqueOwners表来一个equijoin以得到顾客的LastName和First的详细数据。但是,你要考虑到Antiques表中的SellerID列是AntiqueOwners表的一个外码,所以顾客只能在AntiqueOwners表列出ID和名字的行才被列出。我们还想在列的数据中排除SellerID复制的发生,所以我们要在发生重复的列上使用DISTINCT 。

为了防止复制的发生,我们还想将LastName以字母顺序排列,然后在按字母顺序排列FirstName最后排列OwnerID,因此我们还必须使用ORDER BY子句,具体语句如下:SELECT DISTINCT SELLERID, OWNERLASTNAME, OWNERFIRSTNAME

FROM ANTIQUES, ANTIQUEOWNERS

WHERE SELLERID = OWNERID

ORDER BY OWNERLASTNAME, OWNERFIRSTNAME, OWNERID

在这个例子中,因为每个人都买都一个件古董,所以我们将Lasname以字母顺序列出所有的古董拥有者。

(20)Aliases 、In以及子查询

在本节教程中,我们将要介绍Aliases、In以及子查询的用法。首先我们看一下一个查询语句,它搜索所有已经定货的顾客的LastName以及他们定什么货,语句如下:SELECT OWN.OWNERLASTNAME Last Name, ORD.ITEMDESIRED Item Ordered

FROM ORDERS ORD, ANTIQUEOWNERS OWN

WHERE ORD.OWNERID = OWN.OWNERID

AND ORD.ITEMDESIRED IN

(SELECT ITEM

FROM ANTIQUES);

这条查询语句的结果为:

Last Name Item Ordered

--------- ------------

Smith Table

Smith Desk

Akins Chair

Lawson Mirror

下面好好解释一下上面的这条语句:

"Last Name" 和"Item Ordered"给出了报告的数据头。

OWN & ORD是aliases(别名),它们使用在FROM子句中,可在它们的后面加一个点号再加列名就可以进行查询了。这样做就避免了模棱两可的情况,特别是在equijoin WHERE 子句中当两个列都名为OwenerID的时候,而点号就通知SQL我们使用是两个不同表的不同OwnerID。

这里要注意,在FROM子句中Orders表被首先列出,并且确保AntiqueOwners表只用

批处理命令for语句基本用法

批处理命令for语句的基本用法 [系列教程]批处理for语句从入门到精通[20101225更新] ____________________________版主提醒 ____________________________ 文档来自于网络搜索 为了避免影响技术讨论、提高看帖的舒适性,请大家不要在此帖下跟 无实质内容的口水帖,特别是纯顶、纯支持、纯感谢、路过之类的帖子, 管理人员将不定期清理此类回帖,请大家多参与讨论少灌水,与人方便, 终将给自己带来方便,谢谢合作。 ________________________________________________________________ 文档来自于网络搜索 批处理是一门简单的脚本语言,虽然不能独当一面,但是,若作为工作中的辅助工具,绝对会让大家有随用随写、称心如意的畅快感。 文档来自于网络搜索 和其他语言相比,批处理语言有其先天性的优势: 1、系统自带,无需另行安装; 2、命令少,语句简洁,上手非常快; 3、编写出来的脚本小巧玲珑,随写随用; 但是,因为它以命令行方式工作,操作多有不便,在图形界面大行其道的windows世界里,多多少少会让大众望而却步;就算是对命令行有好感的新手,面对微软有如天书的帮助文件,很多人也会败下阵来,因此,论坛里很多会员也发出了编写系统的批处理教程的呼声。

文档来自于网络搜索 编写系统的批处理新手教程,一直是论坛管理层讨论的热点问题,但是,各位管理人员大多都有工作在身,而系统的教程涉及的面是如此之广,面对如此浩大的工程,仅凭一两个人的力量,是难以做好的,因此,本人退而求其次,此次发布的教程,以专题的形式编写,日后人手渐多之后,再考虑组织人力编写全面的教程。 文档来自于网络搜索之所以选择最难的for,一是觉得for最为强大,是大多数人最希望掌握的;二是若写其他命令教程,如果没有for的基础,展开来讲解会无从下手;三是for也是批处理中最复杂最难掌握的语句,把它攻克了,批处理的学习将会一片坦途。 文档来自于网络搜索 这次的for语句系列教程,打算按照for语句的5种句式逐一展开,在讲解for/f的时候,会穿插讲解批处理中一个最为关键、也是新手最容易犯错的概念:变量延迟,大纲如下: 文档来自于网络搜索一前言 二for语句的基本用法 三for /f(含变量延迟) 四for /r 五for /d 六for /l 遵照yibantiaokuan的建议,在顶楼放出此教程的txt版本、word版本和pdf版本,以方便那些离线浏览的会员。 文档来自于网络搜索[本帖最后由namejm于2010-12-26 02:36编辑]

Multiwfn入门

Multiwfn入门tips 文/Sobereva 2012-Nov-7 Multiwfn是一个功能广泛、高效、易用的量子化学波函数分析程序。写本文的目的是帮助刚接触Multiwfn的人能够在短时间内了解Multiwfn的基本原理以及如何使用。但此文并不讲解程序操作过程和原理,因为这些内容已经在诸多帖子、程序手册里有详尽描述和示例。本文着重谈一下应该优先看哪些资料,如何使用手册等问题,使读者明白Multiwfn的使用根本没有什么门槛。与此同时也提及一些量化刚入门的用户可能会忽略的要点或困惑的问题。本文内容对应的是Multiwfn 2.6版。 1 对使用者的要求 对于量化初学者,Multiwfn当成一个工具作为黑箱来用也可以,但是我还是建议使用者具备一些最基本的理论知识,这样才能避免犯低级错误,才能更透彻地理解程序原理和输出信息的物理意义。使用者只要仔细读过Levine的Quantum chem istry第五版或第六版(或具有相同级别的知识),就已经足够了,结合手册中对各个功能的理论的讲解,就完全能够理解Multiwfn涉及的全部功能的原理了。 绝大部分Multiwfn的功能运算效率都很高,而且支持并行,在普通个人双核机子上运行就已经挺快了。完全没必要弄到服务器上去执行。 2 程序的下载、安装、执行和引用 Multiwfn最新版本的可执行文件、源代码和手册pdf文档在https://www.360docs.net/doc/f411586753.html, 的首页上点击相应链接即可下载,老版本可以点击download标签然后下载。文件名上带bin 或binary的表明是已编译好的可执行文件,src代表源代码文件包。 在首页的Recent update history栏目中可以看到最新版本更新了哪些内容。在每个正式版本发布之前,有可能也把正在开发的临时版本挂在这个栏目上。临时版本未经全面测试,手册也没写全,但是已经实现了更新历史上提到的最新功能和改进。如果想尝鲜可以试试。Multiwfn更新比较快。新版本中总会不断添加新的有用的功能、改善界面设计使之更好用、修复各种bug、提升运行效率。我强烈建议时常查看Multiwfn主页,更新到最新版本。老版本的一些bug可能造成结果是错的,但是没有经验的用户又察觉不出来,这种情况甚至有可能使文章的研究的结论有误,这将是很大问题。所以,即便新版本的功能用不到,也应当勤快更新至最新版本。 程序解压后即可执行。不要解压到路径太长的文件夹里。压缩包里的settings.ini里包含了各种运行参数,这些参数平时使用时一般不需要调节。各个参数在文件中的//后面的注释中都有说明,大部分参数的用处在手册中会更详细地解释。这些参数在Multiwfn启动时会被载入。有兴趣的话,不妨将每个参数的注释都看一遍,可能会发现对你有用的。 如果是第一次使用Multiwfn,强烈建议使用Windows版,有多个原因:1 Multiwfn的开发、测试环境都在Windows下完成,所以Windows版比Linux版更可靠(运算结果应该不会有差别,因为都是相同的编译器和编译参数)。2 Linux版Multiwfn的个别功能有限制,见手册Linux users must read部分的说明。3 Linux版本使用时需要对系统进行一些配置,有可能需要安装缺失的库文件(见手册2.1.2节),而不像Windows版那样直接用就行,故略微麻烦。注意Linux版可以在纯文本环境下运行,但是在纯文本环境下一些功能所具备的图形界面就无法显示了(届时会直接导致程序退出)。 程序运行后,先输入要载入的文件名,然后根据屏幕上每个选项所表示的含义,选择相应选项,或输入相应内容即可。选项往往比较多(这是为程序的灵活性考虑),只要从选项的文字上觉得和自己的目的无关,就不必管它,这些暂时用不到的选项的用途日后会渐渐明白。使用Multiwfn的过程中一定要注意阅读和领会屏幕上的各种信息和提示,Multiwfn会尽可能在不至于信息过于冗长的情况下,直接在屏幕上告诉用户接下来应该输入什么,免得用户

【最全最详细】批处理经典入门教程

批处理经典入门教程!(从不懂到高手) 例一、先给出一个最easy的批处理脚本让大家和它混个脸熟,将下面的几行命令保存为name.bat然后执行(以后文中只给出代码,保存和执行方式类似): 代码如下: ping https://www.360docs.net/doc/f411586753.html, > a.txt ping https://www.360docs.net/doc/f411586753.html, >> a.txt ping https://www.360docs.net/doc/f411586753.html, >> a.txt ping https://www.360docs.net/doc/f411586753.html, >> a.txt ping https://www.360docs.net/doc/f411586753.html, >> a.txt ping https://www.360docs.net/doc/f411586753.html, >> a.txt ping https://www.360docs.net/doc/f411586753.html, >> a.txt ping https://www.360docs.net/doc/f411586753.html, >> a.txt exit 是不是都能看的懂?是不是很easy?但它的作用却是很实用的,执行这个批处理后,可以在你的当前盘建立一个名为a.txt的文件,它里面记录的信息可以帮助你迅速找到速度最快的QQ服务器,从而远离“从服务器中转”那一痛苦的过程。这里>的意思,是把前面命令得到的东西放到后面所给的地方,>>的作用,和>的相同,区别是把结果追加到前一行得出的结果的后面,具体的说是下一行,而前面一行命令得出的结果将保留,这样可以使这个a.txt 文件越来越大(想到如何搞破坏了??)。By the way,这个批处理还可以和其他命令结合,搞成完全自动化判断服务器速度的东东,执行后直接显示速度最快的服务器IP,是不是很爽?后面还将详细介绍。 例二、再给出一个已经过时的例子(a.bat): @echo off if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gif a.bat 为什么说这是个过时的例子呢?很简单,因为现在已经几乎没有人用带广告的QQ了(KAO,我的QQ还显示好友三围呢!!),所以它几乎用不上了。但曾经它的作用是不可小窥的:删除QQ的广告,让对话框干干净净。这里用的地址是QQ的默认安装地址,默认批处理文件名为a.bat,你当然可以根据情况自行修改。在这个脚本中使用了if命令,使得它可以达到适时判断和删除广告图片的效果,你只需要不关闭命令执行后的DOS窗口,不按CTRL+C强行终止命令,它就一直监视是否有广告图片(QQ也再不断查看自己的广告是否被删除)。当然这个脚本占用你一点点内存,呵呵。 例三,使用批处理脚本查是否中冰河。脚本内容如下: 复制代码代码如下: @echo off

目前为止最全的批处理教程

目录 第一章 批处理基础 第一节 常用批处理内部命令简介 1、REM 和 :: 2、ECHO 和 @ 3、PAUSE 4、ERRORLEVEL 5、TITLE 6、COLOR 7、mode 配置系统设备 8、GOTO 和 : 9、FIND 10、START 11、assoc 和 ftype 12、pushd 和 popd 13、CALL 14、shift 15、IF 16、setlocal 与 变量延迟(ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION 启动或停用延缓环境变量扩展名。) 17、ATTRIB显示或更改文件属性 第二节 常用特殊符号

1、@命令行回显屏蔽符 2、%批处理变量引导符 3、> 重定向符 4、>>重定向符 5、<、>、<& 重定向符 6、|命令管道符 7、^转义字符 8、组合命令 9、& 组合命令 10、||组合命令 11、\"\"字符串界定符 12、, 逗号 13、; 分号 14、() 括号 15、! 感叹号 第二章 FOR命令详解 一、基本格式 二、参数 /d仅为目录 三、参数 /R递归(文件名) 四、参数 /L迭代数值范围 五、参数 /F迭代及文件解析 第三章 FOR命令中的变量

一、 ~I- 删除任何引号(\"),扩展 %I 二、 %~fI- 将 %I 扩展到一个完全合格的路径名 三、 %~dI- 仅将 %I 扩展到一个驱动器号 四、 %~pI- 仅将 %I 扩展到一个路径 五、 %~nI- 仅将 %I 扩展到一个文件名 六、 %~xI- 仅将 %I 扩展到一个文件扩展名 七、 %~sI- 扩展的路径只含有短名 八、 %~aI- 将 %I 扩展到文件的文件属性 九、 %~tI- 将 %I 扩展到文件的日期/时间 十、 %~zI- 将 %I 扩展到文件的大小 十一、 %~$PATH:I 第四章 批处理中的变量 一、系统变量 二、自定义变量 第五章 set命令详解 一、用set命令设置自定义变量 二、用set命令进行简单计算 三、用set命令进行字符串处理 1、字符串替换 2、字符串截取 第六章 if命令讲解 第一种用法:IF [NOT] ERRORLEVEL number command

cmd命令行教程

CMD 命令行高级教程 CMD命令行高级教程精选合 目录 第一章批处理基础 第一节常用批处理内部命令简介 1、REM 和:: 2、ECHO 和@ 3、PAUSE 4、ERRORLEVEL 5、TITLE 6、COLOR 7、mode 配置系统设备 8、GOTO 和: 9、FIND 10、START 11、assoc 和ftype 12、pushd 和popd 13、CALL 14、shift 15、IF 16、setlocal 与变量延迟DISABLEDELAYEDEXPANSION 启动或停用延缓环境变量扩展名。) 17、ATTRIB 显示或更改文件属性 第二节常用特殊符号 1、@ 命令行回显屏蔽符 2、% 批处理变量引导符 3、> 重定向符 4、>> 重定向符 5、<、>&、<& 重定向符 6、| 命令管道符 7、^ 转义字符 8、& 组合命令 9、&& 组合命令 10、|| 组合命令 11、"" 字符串界定符 12、, 逗号 13、; 分号 14、() 括号 15、! 感叹号 第二章FOR命令详解 一、基本格式 二、参数/d 仅为目录

三、参数/R 递归(文件名) 四、参数/L 迭代数值范围 五、参数/F 迭代及文件解析 第三章FOR命令中的变量 一、~I - 删除任何引号("),扩展%I 二、%~fI - 将%I 扩展到一个完全合格的路径名 三、%~dI - 仅将%I 扩展到一个驱动器号 四、%~pI - 仅将%I 扩展到一个路径 五、%~nI - 仅将%I 扩展到一个文件名 六、%~xI - 仅将%I 扩展到一个文件扩展名 七、%~sI - 扩展的路径只含有短名 八、%~aI - 将%I 扩展到文件的文件属性 九、%~tI - 将%I 扩展到文件的日期/时间 十、%~zI - 将%I 扩展到文件的大小 十一、%~$PATH:I 第四章批处理中的变量 一、系统变量 二、自定义变量 第五章set命令详解 一、用set命令设置自定义变量 二、用set命令进行简单计算 三、用set命令进行字符串处理 1、字符串替换 2、字符串截取 第六章if命令讲解 第一种用法:IF [NOT] ERRORLEVEL number command 第二种用法:IF [NOT] string1==string2 command 第三种用法:IF [NOT] EXIST filename command 第四种用法:IF增强的用法 第七章DOS 编程高级技巧 一、界面设计 二、if…else…条件语句 三、循环语句 四、子程序 五、用ftp 命令实现自动下载 六、用7-ZIP实现命令行压缩和解压功能 七、调用VBScript 程序 八、将批处理转化为可执行文件 九、时间延迟 1、利用ping命令延时 2、利用for命令延时 3、利用vbs延迟函数,精确度毫秒,误差1000毫秒内 4、仅用批处理命令实现任意时间延迟,精确度10 毫秒,误差50 毫秒内 十、模拟进度条

系统垃圾清理BAT教程

清理电脑垃圾的七个bat文件 第一招:清除系统垃圾 在Windows在安装和使用过程中都会产生相当多的垃圾文件,包括临时文件(如:*.tmp*._mp)日志文件(*.log)临时帮助文件(*.gid)磁盘检查文件(*.chk)临时备份文件(如:*.old*.bak)以及其他临时文件特别是如果一段时间不清理IE的临时文件夹Temporary Internet Files,其中的缓存文件有时会占用上百MB的磁盘空间这些垃圾文件不仅仅浪费了宝贵的磁盘空间,严重时还会使系统运行缓慢 下面是步骤很简单就两步! 在桌面上点鼠标右键,选择新建一个记事本,把下面的字复制进去,点另存为,把文件名定为清除系统垃圾.bat就完成,记住后缀名一定要是.bat,好ok了!你的垃圾清除器就这样制作成功了!双击它就能很快地清理垃圾文件,大约一分钟不到 PS. 要复制进去的字是见下(红色部分) @echo off echo 正在清除系统垃圾文件,请稍等...... del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._mp del /f /s /q %systemdrive%\*.gid del /f /s /q %systemdrive%\*.chk del /f /s /q %systemdrive%\*.old del /f /s /q %systemdrive%\recycled\*.* del /f /s /q %windir%\*.bak del /f /s /q %windir%\prefetch\*.* rd /s /q %windir%\temp & md %windir%\temp del /f /q %userprofile%\cookies\*.*

windows批处理初级教程

w i n d o w s批处理初级教程 Prepared on 24 November 2020

前一阵子使用WIN7的时候,忽然出现图标缓存的问题。去网上搜了下解决方案,发现一个比较好的处理步骤。原文我已经忘记了,后来在年三十的晚上,顿觉很无聊,就按照印象中的代码,写了一个小的批处理文件。具体参考(此处插入百度文库的那篇文章地址)。 后来觉得批处理挺好玩的,趁在家休息的这些日子,系统学习一下批处理的语法以及应用。 批处理命令通俗的讲就是平时我们见到的那些".bat"为后缀的文件,它们可以不断的重读执行命令,实现windows的自动管理,可以将用户从重复、繁琐、复杂的管理任务中解放出来,事半功倍。 Windows中常用的批处理程序应用范围主要是:文件/文件夹管理、系统启动与关闭、个性化桌面环境、个性化IE、个性化资源管理器、系统优化、系统维护与管理、系统安全、网络管理与安全、组策略与MMC的应用和其他一些高级应用。 一般而言,创建批处理文件最好的方式是使用记事本编辑保存文件。即在记事本中写代码,然后保存的时候以".bat"作为后缀即可。 看一个例子,以初步接触批处理小程序。为演示方便,PC机选择目前最为大众化的MicrosoftWindowsXP作为操作系统。 (1)在windows下按【Win+R】键,在弹出的"运行"对话框中输入"notepad" (2)在文本文件里输入 (3)保存批处理文件

(4)接下来就是运行这个批处理文件。初学者编写的小程序推荐在DOS下面运行,等已经可以独立的编写稍微复杂程序的时候在找到这个批处理文件,然后直接打开就可以了。 在windows下按【Win+R】键,在弹出的"运行"对话框中输入"cmd",并转到存储""的目录下,这里就是指的是D盘。 运行,就会出现下面的结果 如果直接选择打开"",就会出现下面的界面 所以你会发现,这种直接打开的方式不仅操作简单,而且界面简洁,但是一开始最好从DOS下面运行比较好,究竟为什么,你会在开始的几个小程序里体会到。 在学习批处理程序语法的时候,有一种非常便利的方式。比如下面要讲的第一个语法,"echo"的使用,我们可以使用下面的方法来获取命令的格式以及用途。 (1)新建一个批处理文件,具体的内容如图所示。 (2)在DOS下运行,得到下面的结果 这样我们就获得了echo命令的语法和用途。 授人以鱼不如授之以渔,掌握这个方法之后,即使长时间没写批处理小程序,我们依旧能够在最短的时间里回忆起相关的语法以及命令。 一些常用的命令有:echo、@、goto、pause、call、start、rem、if、set、setlocal、shift、for、通配符("*"、"")、管道符("|")、重定向符("<"、">"、">>")等等。 在接下来的章节中,我将简单的介绍下这些命令的使用方法。 echo命令语法及应用

bat批处理:bat批处理教程(三)

bat批处理:bat批处理教程(三) 学过汇编或C朋友肯定都知道call指令表示什么意思了在这里它意思其实也是样在批处理脚本中call命令用来从个批处理脚本中另个批处理脚本看例 8(默认 3个脚本文件名分别为start.bat、10.bat和ipc.bat): start.bat: …… CALL 10.BAT 0 …… 10.bat: …… ECHO %IPA%.%1 >HFIND.TMP …… CALL ipc.bat IPCFind.txt ipc.bat: for /f "tokens=1,2,3 delims= " %%i in (%1) do call HACK.bat %%i %%j %%k 有没有看出什么不对地方?没看出来啊?没看出来就对了其实就没有不对地方嘛你如何看出来!从上面两个脚本你可以得到如下信息: 1、脚本可以灵活运用循环运用、重复运用 2、脚本可以使用参数!有关第点就不多说了聪明你看就应该会这里说下第 2点 在start.bat中10.bat后面跟了参数0在执行时效果其实就是把10.bat里参数%1用0代替在start.bat中ipc.bat后面跟了参数ipcfind.txt(个文件也可以做参数)执行时效果就是用ipc.bat中每行3个变量(这里不懂没关系学过for命令后就懂了)对应代换ipc.bat 中%%i、%%j和%%k这里参数是非常灵活使用时需要好好体会在初学期间可以先学习只脚本至于连脚本参数起使用情况在后面学习中自然就会有比较深刻理解这是当你已经可以灵活运用批处理脚本后如何使代码写更精简更完美更高效就自然包括到了考虑范围这时候你就会发现在脚本时直接加入参数可以使代码效率加倍By the way上面这几个脚本都是Bat.Worm.Muma病毒部分在后面教程里大家将有机会见到这个病毒真面目。 那是不是说在同个目录下至少存在两个批处理脚本文件(只有个你谁?)?呵呵注意了这句话错了!!只有个照样可以----自身!看例9(默认脚本文件名a.bat): net send %1 This is a call example. call a.bat 这两句结合效果自然不如何样只有台机器来发消息谁怕谁啊?我给

小凡使用教程

DynamipsGUI --- 强大的cisco学习工具模拟器 一、入门:如何安装DynamipsGUI 现在小凡最新的版本的是2.83,怎么样在我们的电脑上安装小凡: 二:我们通过小凡制作如下组网的模拟器:最终pc可以telnet访问R1 1、打开小凡界面如图,选择路由器和交换机的个数,同时勾选桥接到PC的复选框: 注意图中用红色方框标示的位置: 路由器的个数和交换机个数不做详细说明。 桥接到pc可以让小凡和真实的pc进行通讯 2、选择设备类型,并选择IOS文件 选中3640路由器的复选框,这里我们用3640交换机,也可以选择其它类型的交换机。选中3640后面的复选框后,可以从下面设备类型的下拉菜单中选择设备类型 单击浏览,选择IOS文件。

4、计算idle值: 单击:计算idle值,会出现如下回话框,查看IOS文件确实存在,单机确定 5、单击确定后,出现如下回话框:

单击任意键继续,出现如下界面:选择no 进入路由器后,随便配置一点东西,按住ctrl+]+i得到如下的界面,我们选择后面数字最大的值的idle值:复制粘贴到小凡中。

如图所示: 把idle值填入后,点击确定进入如下设置; 6、配置桥接参数:

如图所示,选择NIC-0也可以选择其它的,点击计算桥接参数: 出现如图所示的界面: 本PC上有两块网卡,一个物理网卡,一个虚拟网卡,用红色方框标注的是虚拟网卡,我们选择虚拟网卡的桥接参数:注:如果机器上的网卡过多,不知道哪一个是自己想要的网卡时,

这时可以先把自己不用的网卡禁用,只留自己想用网卡,这个时候该界面显示出来就只有自己想用的网卡了。 7、点击确定桥接参数,然后点击浏览确定输出目录后,点击下一步:

批处理for语句从入门到精通(完整版)

批处理是一门简单的脚本语言,虽然不能独当一面,但是,若作为工作中的辅助工具,绝对会让大家有随用随写、称心如意的畅快感。 和其他语言相比,批处理语言有其先天性的优势: 1、系统自带,无需另行安装; 2、命令少,语句简洁,上手非常快; 3、编写出来的脚本小巧玲珑,随写随用; 但是,因为它以命令行方式工作,操作多有不便,在图形界面大行其道的windows世界里,多多少少会让大众望而却步;就算是对命令行有好感的新手,面对微软有如天书的帮助文件,很多人也会败下阵来,因此,论坛里很多会员也发出了编写系统的批处理教程的呼声。 编写系统的批处理新手教程,一直是论坛管理层讨论的热点问题,但是,各位管理人员大多都有工作在身,而系统的教程涉及的面是如此之广,面对如此浩大的工程,仅凭一两个人的力量,是难以做好的,因此,本人退而求其次,此次发布的教程,以专题的形式编写,日后人手渐多之后,再考虑组织人力编写全面的教程。 之所以选择最难的for,一是觉得for最为强大,是大多数人最希望掌握的;二是若写其他命令教程,如果没有for的基础,展开来讲解会无从下手;三是for也是批处理中最复杂最难掌握的语句,把它攻克了,批处理的学习将会一片坦途。 这次的for语句系列教程,打算按照for语句的5种句式逐一展开,在讲解 for /f 的时候,会穿插讲解批处理中一个最为关键、也是新手最容易犯错的概念:变量延迟,大纲如下: 一前言 二 for语句的基本用法 三 for /f (含变量延迟) 四 for /r 五 for /d 六 for /l 一、前言

在批处理中,for是最为强大的命令语句,它的出现,使得解析文本内容、遍历文件路径、数值递增/递减等操作成为可能;配合if、call、goto等流程控制语句,更是可以实现脚本复杂的自动化、智能化操作;合理使用for语句,还能使代码大为简化,免除各位编写大量重复语句之苦。而能否熟练使用for语句,已经成为衡量一个人批处理水平高低最主要的标准。 在这个系列教程中,我将通过实际应用中频繁出现的例子,带领大家步入for语句的神奇之门,一步步迈向for语句的魔幻殿堂,使得大家在实际的应用中,能独立写出简洁高效的代码,在批处理的世界里自由驰骋。 注意:以下的讲解,都是基于简体中文版Windows XP Pro SP3的操作系统环境。二、for语句的基本用法[2008.11.9更新] 正如色彩缤纷的七彩光芒是由红绿蓝三原色构成的一样,最复杂的for语句,也有其基本形态,它的模样是这样的: 在cmd窗口中: 复制内容到剪贴板 for %I in (command1) do command2 在批处理文件中: 复制内容到剪贴板 for %%I in (command1) do command2 之所以要区分cmd窗口和批处理文件两种环境,是因为在这两种环境下,命令语句表现出来的行为虽然基本一样,但是在细节上还是稍有不同,最明显的一个差异就是:在cmd 窗口中,for之后的形式变量I必须使用单百分号引用,即%I;而在批处理文件中,引用形式变量I必须使用双百分号,即%%I。为了方便起见,若不是特别强调,以下的讲解都以批处理文件环境为例。 我们先来看一下for语句的基本要素都有些什么:

bat基础教程

Bat全部常用的命令 1.@命令:作用是隐藏它后面这一行的命令本身(只能影响当前行) 例如:echo 你好!和@echo 你好!的结果。 不带@的运行结果: 带@的运行结果: 2.echo命令:回显示 格式:echo on或off 中文为“反馈”、“回显”的意思。它其实是一个开关命令,就是说它只有两种状态:打开和关闭。于是就有了echo on和echo off两个命令了。直接执行echo命令将显示当前echo命令状态(off或on)执行echo off将关闭回显,它后面的所有命令都不显示命令本身,只显示执行后的结果。 3.pause命令:暂停 格式:pause中文为“暂停”的意思。它的作用,是让当前程序进程暂停一下,并显示一行信息:请按任意键继续. . .。我们可以加>nul把这个信息隐藏。 格式:pause >nul 我们可以加>nul把这个信息隐藏。 Pause 运行结果:

Pause >nul运行结果: 4.:和goto 死循环一段程序 格式::标签 Goto 标签 使用方法: @echo off :1 echo 你好! goto 1 pause 提示:这里是一直死循环输出你好! 运行结果: 5.Rem和::的区别。 格式:rem一定要单独一行 格式:::一定要单独一行 rem和::都起到注释的作用,然而又有些不同。一、

rem是一条命令,在运行的时候相当于把rem本身及其后面的内容置空。既然它是一条命令,就必须处于单独的一行或者有 类似“&”的连接符号连接。 二、 批处理遇到以冒号“:”开头的行时(忽略冒号前的空格),会将其后的语句识别为“标记”而不是命令语句,因此类似 “:label”这样的东东在批处理中仅仅是一个标记。 三、 对于“::”而言,之所以可以达到注释的效果,是因为第二个:不是标签的合法字符(把它换成\;.等等都行),它不被当作一个合法的标签 6.Set / p 和set / a 格式:set / a加减法求结果(大体上是加减法求结果) 格式:set / p 这一个是自定义变量名的。 例如: @echo off Set / p a=第一个数: Set / p b=第二个数: Set / a c=%a%+%b% Echo %c% Pause 运行结果如下: 输入一个数字23按回车键: 再输入一个数字88 按回车键:

Advanced Renamer 用户指南

Advanced Renamer Advanced Renamer 用户指南 概述 快速入门 添加文件 设置重命名方案 开始重命名 例子 图片 下载的文件 脚本 重命名方法 添加字符 添加 索引位置 反向 适用到 修改文件属性 按列表重命名 替换字符 替换文本 替换为 区分大小写 使用正则表达式 适用到 按列表替换字符 区分大小写 使用正则表达式 应用到 移动字符 移动自 移动字数 移动到 相对移动 反向 使用正则表达式 修改大小写 重构文件名 模式 删除字符 移除计数 开始于 反向 使用正则表达式 应用到 按模式删除字符 重新编号 编号位置 更改为 新编号(仅限绝对编号模式) 间隔(仅限相对编号模式)

编号差异(仅限绝对编号模式) 前导零 应用到 运行脚本 如何使用 文件名内按分隔符互换内容 分隔符 第几个分隔符 修改时间戳 应用到 图像日期和时间 绝对日期和时间/ 相对日期和时间 文件名模式/目录名模式 从文件名两端修剪 标签 默认标签 高级标签 日期/时间标签 创建日期/时间标签 修改日期/时间标签 校验标签 文件大小标签 GPS定位标签 ID3标签 图像标签 电视节目标签 视频标签 使用 Advanced Renamer 批处理模式 列 命令行自动化 ExifTool 文件对 热键 元数据写入 名称冲突规则 失败 附加图像秒 添加模式 正则表达式 一个简单的正则表达式 我们如何使用它来重命名? 序列 分组 一个更高级的例子 元字符 列表 文件和文件夹 添加文件 添加目录中的所有文件 添加文件夹

删除项目 移动项目 保存列表 加载列表 缩略图模式 设置对话框 环境 资源管理器上下文菜单 关联.aren文件格式到Advanced Renamer 保存设置到此文件夹 图像文件 缩略图宽度&高度 用于图像日期时间操作的exif字段 使用EXIF信息获取图像的宽度和高度 音乐和视频文件 ID3序列 不要分析音乐元数据 不要分析视频元数据 程序 显示文件信息框 确认清除列表 显示网格 显示入门指南 在启动时检查更新 显示添加方法按钮栏 在左边显示开始按钮 项目限制 重命名 替换不支持的字符为 单词分隔符 批处理结束时添加文件 在Inc Nr标签中使用前导零 选中状态影响Inc Nr标签 用相同的新文件名重命名文件对 导入 CSV导入文件 文件名 列分隔符 首行为表头 原文件名的列/新文件名的列 CSV导入数据 文件名 列分隔符 首行为表头 文件编码 电视节目导入

grub4dos初级教程 (免费版)

目录 1 grub4dos初级教程-入门篇 1.1 grub简介 1.2 如何获得grub4dos最新版 1.3 如何安装grub4dos 1.3.1 通过Windows NT的启动菜单进入grub4dos 1.3.2 通过DOS启动grub 1.3.3 通过mbr启动grub 1.3.4 通过Windows VISTA/Window 7的启动菜单进入grub4dos 1.4 如何使用grub4dos 1.5 结言 2 grub4dos初级教程-应用篇 2.1 硬盘上的应用 2.1.1 加载软盘镜像 2.1.2 启动WinPE 2.1.3 启动系统 2.1.4 引导光盘镜像(ISO仿真) 2.2 光盘上的应用 2.2.1 grub引导的可启动光盘 2.2.2 BCDW引导GRUB的可启动光盘 2.3 软盘上的应用

2.3.1 通过DOS启动grub的软盘应用 2.3.2 引导扇区安装了GRLDR引导记录的软盘应用 2.4 优盘上的应用 2.5 结言 3 grub4dos初级教程-进阶篇 3.1 设置密码 3.2 菜单内置 3.3a 使用个性化grub4dos文件名(grubinst) 3.3b 用批处理自动给grldr改名(适用于最新版grldr)NEW! 3.4 安装Windows XPE到逻辑分区 3.5 利用savedefault命令传递参数的方法与应用 3.6 利用dd命令传递参数的方法与应用NEW! 4 附录 Grub legacy 4.01 Grub 命令索引 4.02 Grub 简体中文化版使用方法 4.03 GRUB安装配置使用汇总 4.04 Grub命令使用详解 4.05 GRUB三步通 4.06 Grub相关安装配置及使用实例汇总讲析 Grub2资料 4.07 GRUB2使用简介by bean NEW! 4.08 GRUB2高级教程by bean NEW!

完整版PhotoshopCS6基础知识教程

Photoshop CS6基础知识教程 第一课初识 Photoshop CS (PS ) 一、Photoshop 简介及应用领域 Photoshop 是Adobe 公司开发的一个跨平台的平面图像处理软件,是专业设计人员的首选软 件。1990 年 2 月,Adobe 公司推出 Photoshop1.0, 2005 年 5 月最新版本为 PhotoshopCS2, 即 Photoshop9.0。 Photoshop 是图像处理软件,其优势不在图形创作。 图像处理是对已有的位图图像进行编辑、 加工、处理以及运用一些特殊效果; 常见的图像处 理软件有 Photoshop 、Photo Pain ter 、Photo Impact 、Pai nt Shop Pro 。 图形创作是按照自己的构思创作。常见的图形创作软件有 川ustrator 、CorelDraw 、Painter 。 应用领域:主要应用于平面设计、网页设计、 数码暗房、建筑效果图后期处理以及影像创意 等。 二、界面构成 Photoshop 的界面由菜单栏、工具选项栏、工具箱、图像窗口、浮动调板、状态栏等 菜单栏:将Photoshop 所有的操作分为九类,共九项菜单。 如编辑、图像、图层、滤镜; 工具选项栏:会随着使用的工具不同,工具选项栏上的设置项也不同; 工具箱:工具下有三角标记,即该工具下还有其它类似的命令。当选择使用某工具,工 具选项栏则列出该工具的选项; 按工具上提示的快捷键 使用该工具 按SHIFT+工具上提示的快捷键 切换使用这些工具 按TAB 显示/隐藏工具箱、工具选项栏和调板 按F 切换屏幕模式(标准屏幕模式、带有菜单栏的全屏模式、全屏模式) 状态栏:包含四个部分,分别为:图像显示比例、文件大小、浮动菜单按钮及工具提示 栏; 浮动调板: 双击调板标题 拖动调板标签 调板右边三角 复位调板位置 存储工作 区 窗口 ->工作区->存储工作区 SHIFT+TAB 显示/隐藏调板 调板窗:可将常用的调板置入其中。 文件浏览器:专业的图像浏览器,可预览各种格式的图片,并有批处理和批重命名的功 能。 基本概念 1. 像素:是组成图像的最基本单元,它是一个小的方形的颜色块。 2. 图像分辨率:即单位面积内像素的多少。分辨率越高,像素越多,图像的信息量越大。 单位为PPI (Pixels Per Inch ),女口 300PPI 表示该图像每平方英寸含有 300 x 300个像素。 图像分辨率和图像尺寸的值决定了文件的大小及输出质量,分辨率越高,图像越清晰, 所产生的文件也越大。图像分辨率成为图像品质和文件大小之间的代名词; 如果是用来印刷的图像,其分辨率一定要大于等于: 120像素/厘米,折算大约是:300 像素/英寸。 3?点阵图:又称像素图,即图像由一个个的颜色方格所组成,与分辨率有关,单位面积内 像素越多,分辨率越高,图像的效果越好。用于显示一般为 72PPI ;用于印刷一般不低于 300PPI 。 4. 矢量图:是由数学方式描述的曲线组成,其基本组成单元为锚点和路径。由 Coreldraw 、 川ustrator 、FreeHand 等软件绘制而成,与分辨率无关,放大后无失真。 可在窗口菜单中显示各种调板。 最小化或还原调板 分离和置入调板 调板菜单 窗口 ->工作区->复位调板位置

批处理For语句从入门到精通(完整版)_20101225

批处理For语句从入门到精通 批处理之家论坛(https://www.360docs.net/doc/f411586753.html,) 批处理For语句 从入门到精通 兼谈变量延迟 作者:namejm 初稿:2008-10-26 定稿:2010-12-25 本文作者namejm,长年混迹于中国DOS联盟论坛(https://www.360docs.net/doc/f411586753.html,),并曾长期担任批处理之家论坛(https://www.360docs.net/doc/f411586753.html,)站长,以其多年的批处理代码编写经验,以“但求最好”的心态,两年磨一剑,以通俗易懂、风趣生动的语言,由浅入深地介绍了批处理中最为强大的for语句,有别于网上粗制滥造的教程,是广大批处理爱好者不可多得

目录 一、前言 (2) 二、for语句的基本用法 (3) 三、文本解析显神威:for /f 用法详解 (7) 前言 (7) (一)为解析文本而生:for /f 的基本用法 (7) (二)切分字符串的利器:delims= (8) (三)定点提取:tokens= (10) (四)跳过无关内容,直奔主题:skip=n (13) (五)忽略以指定字符打头的行:eol= (13) (六)如何决定该使用for /f 的哪种句式?(兼谈usebackq的使用) (15) (七)变量延迟详解 (18) 四、翻箱倒柜遍历文件夹:for /r (25) (一)for /r 的作用及用法 (25) (二)for /r 还是dir /ad /b /s?列举目录时该如何选择 (27) 五、仅仅为了匹配第一层目录而存在:for /d (30) 六、计数循环:for /l (32) 后记: (34)

批处理For语句从入门到精通 首发地址:https://www.360docs.net/doc/f411586753.html,/thread-2189-1-1.html 一、前言 在批处理中,for是最为强大的命令语句,它的出现,使得解析文本内容、遍历文件路径、数值递增/递减等操作成为可能;配合if、call、goto等流程控制语句,更是可以实现脚本复杂的自动化、智能化操作;合理使用for语句,还能使代码大为简化,免除各位编写大量重复语句之苦。而能否熟练使用for语句,已经成为衡量一个人批处理水平高低最主要的标准。 在这个系列教程中,我将通过实际应用中频繁出现的例子,带领大家步入for 语句的神奇之门,一步步迈向for语句的魔幻殿堂,使得大家在实际的应用中,能独立写出简洁高效的代码,在批处理的世界里自由驰骋。 注意:以下的讲解,都是基于简体中文Windows XP Pro SP3的操作系统环境

BAT(批处理)文件编写详细手册

BAT(批处理)文件编写详细手册 一、批处理文件简介 首先,批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。 其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句 (for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。批处理的程序语句就是一条条的 DOS命令(包括内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。 第三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch 目录(例如C:/BATCH),然后将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:/batch,你就可以在任意位置运行所有你编写的批处理程序。 简单的说,批处理的作用就是自动的连续执行多条命令。 二、批处理中常用命令: 1.echo命令:表示显示此命令后的字符。字符不需要使用引号。其中,%和^两个字 符不能显示。 2.Echo off命令:表示在此语句后所有运行的命令都不显示命令行本身。即关闭echo 回显功能。可以使用echo on打开。 3.@命令:它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能 影响当前行)。 4.call命令:调用另一个批处理文件(如果不用call而直接调用别的批处理文件, 那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令)。 5.pause命令:运行此句会暂停批处理的执行并在屏幕上显示Press any key to continue...的提示,等待用户按任意键后继续。如果不想显示以上英文提示信息, 可以这样写:pause>null 6.rem命令:表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考 用的(相当于程序中的注释)。 7.::命令:与rem命令等效。 例1:用edit编辑a.bat文件,输入下列内容后存盘为c:/a.bat,执行该批处理 文件后可实现:将根目录中所有文件写入 a.txt中,启动UCDOS,进入WPS等功能。 批处理文件的内容为: 命令注释: @echo off //不显示后续命令行及当前命令行

批处理修改注册表基础教程

批处理修改注册表基础教程 禁止使用命令提示符程序和批处理文件 Windows 2000/XP下的命令提示符(即CMD.exe程序)相当于Windows 98下的MS-DOS程序。出于系统本身安全考虑,应防止非法用户在命令提示符下或是利用批处理文件(BAT文件)对计算机进行破坏,这可通过修改注册表来实现。 选择【开始】→【运行】命令,在【运行】对话框的【打开】文本框中输入“regedit.exe”,单击【确定】按钮,运行注册表编辑器,依次打开以下键: HKEY_CURRENT_USER\Software\Policies\Microsoft\System 在右边的窗口中新建一个DWORD值,其名称为DisableCMD,设数值数据为2,则表示命令提示符程序和批处理文件都不能被运行,其值为1,则只是禁止命令提示符的运行。 示例: echo REGEDIT4>iedown.reg echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3]>>iedown.reg echo "1803"=dword:00000000>>iedown.reg 以上生成REG文件. regedit /s iedown.reg del iedown.reg 运行REG后删除之. 还可以:写一个注册表文件,放在一个位置.. 然后批处理导入: @echo off regedit /s 注册表文件路径 exit 说明:/s是不弹出确认提示直接导入 先学习一下如何使用.REG文件来操 作注册表.(我们可以用批处理来生成一个REG文件) 关于注册表的操作,常见的是创建、修改、删除。 1.创建 创建分为两种,一种是创建子项(Subkey) 我们创建一个文件,内容如下: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\hacker] 然后执行该脚本,你就已经在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft下创建了一个名字为"hacker"的子项。 另一种是创建一个项目名称 那这种文件格式就是典型的文件格式,和你从注册表中导出的文件格式一致,内容如下:Windows Registry Editor Version 5.00

相关主题
相关文档
最新文档