Archive for 八月, 2007

Linux 提示: 用cron和at调度作业

Posted by 机器人 on 31st 八月 2007 in linux/server

载自:IBM中文站点

系统管理员需要在系统负载低的午夜运行作业,或者需要每天或每月运行作业,同时又不愿意牺牲睡眠时间或假期。调度任务的其他原因包括自动执行日常任务或者确保每次都以相同的方式处理任务。本文帮助您使用 cronat 功能调度作业定期运行或在指定的时间运行一次。

Linux® 和 UNIX® 系统允许调度任务在以后执行一次,或者重复运行。本文是从 developerWorks 教程 “LPI 102 考试准备:管理任务” 摘录的,讲解如何调度作业定期运行,或在指定的时间运行一次。

在 Linux 系统上,许多管理任务必须频繁地定期执行。这些任务包括轮转日志文件以避免装满文件系统、备份数据和连接时间服务器来执行系统时间同步。上面提到的教程更详细地介绍了这些管理任务。在本文中,学习 Linux 中提供的调度机制,包括 cronanacron 设施以及 crontabat 命令。即使系统常常关机,anacron 也可以帮助调度作业。

以一定的时间间隔运行作业

以一定的时间间隔运行作业需要使用 cron 设施进行管理,它由 crond 守护进程和一组表(描述执行哪些操作和采用什么样的频率)组成。这个守护进程每分钟唤醒一次,并通过检查 crontab 判断需要做什么。用户使用 crontab 命令管理 crontab。crond 守护进程常常是在系统启动时由 init 进程启动的。

为了简单,假设希望定期运行清单 1 所示的命令。这个命令实际上只报告日期和时间,其他什么事都不做,但是它可以说明如何使用 crontab 设置 cron 作业,而且还可以通过输出看到作业运行的时间。设置 crontab 条目需要一个包含转义的 shell 元字符的字符串,所以适合于简单的命令和参数。在这个示例中,将从脚本 /home/ian/mycrontab.sh 运行 echo 命令,这个脚本不需要参数。 这可以减少处理转义字符的工作。

清单 1. 一个简单的命令示例

[ian@lyrebird ~]$ cat mycrontest.sh
#!/bin/bash
 echo "It is now $(date +%T) on $(date +%A)"
[ian@lyrebird ~]$ ./mycrontest.sh
It is now 18:37:42 on Friday

创建 crontab

使用 crontab 命令和 -e(表示 “edit”)选项创建 crontab。这会打开 vi 编辑器,除非在 EDITOR 或 VISUAL 环境变量中指定了另一种编辑器。

每个 crontab 条目包含六个字段:

  1. 分钟
  2. 小时
  3. 星期
  4. sh 执行的字符串

分钟和小时的范围分别是 0-59 和 0-12,日和月的范围分别是 1-31 和 1-12。星期的范围是 0-6,0 表示星期日。星期也可以指定为 sun、mon、tue 等等。第 6 个字段包含前 5 个字段之后的所有内容,它是要传递给 sh 的字符串。百分号(%)将转换为空行,所以如果要使用 % 或其他任何特殊字符,就要在前面加上反斜线(\)。第一个 % 之前的一行传递给 shell,这个 % 之后的所有行都作为标准输入传递。

各个与时间相关的字段可以指定一个单独的值、值的范围(比如 0-10 或 sun-wed)或者以逗号分隔的单独值和范围列表。清单 2 给出一个 crontab 条目示例。

清单 2. 一个简单的 crontab 示例

0,20,40 22-23 * 7 fri-sat /home/ian/mycrontest.sh

在这个示例中,我们的命令在 7 月的每个星期五和星期六晚上 10 点到午夜之间的第 0、20、40 分钟(每 20 分钟)执行。关于指定时间的其他方式的细节,参见 crontab(5) 的手册页。

输出

您可能想知道对来自命令的输出会如何处理。为使用 cron 而设计的大多数命令会使用 syslog 在日志中记录输出(参见教程 “LPI 102 考试准备:管理任务” 中的讨论)。但是,定向到 stdout 的输出会通过电子邮件发送给用户。清单 3 给出我们的命令示例可能产生的输出。

清单 3. 通过电子邮件发送的 cron 输出

From ian@lyrebird.raleigh.ibm.com  Fri Jul  6 23:00:02 2007
Date: Fri, 6 Jul 2007 23:00:01 -0400
From: root@lyrebird.raleigh.ibm.com (Cron Daemon)
To: ian@lyrebird.raleigh.ibm.com
Subject: Cron <ian@lyrebird> /home/ian/mycrontest.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/ian>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=ian>
X-Cron-Env: <USER=ian>

It is now 23:00:01 on Friday

crontab 存储在哪里?

suid 程序

suid 程序以程序文件的所有者的权限运行,而不是采用运行程序的用户的权限。关于 suid 的更多信息,参见教程 “LPI 101 考试准备:设备、Linux 文件系统和 Filesystem Hierarchy Standard”;关于 passwd 命令的更多信息,参见教程 “LPI 102 考试准备:管理任务”。

crontab 命令创建的 crontab 存储在 /etc/spool/cron 下面的一个子目录中,这个子目录与创建 crontab 的用户同名,所以上面的 crontab 存储在 /etc/spool/cron/ian 中。因此,与 passwd 命令一样,crontab 命令是一个用根权限运行的 suid 程序。

/etc/crontab

除了 /var/spool/cron 中的用户 crontab 文件之外,cron 还会检查 /etc/crontab 文件和 /etc/cron.d 目录中的文件。在这些系统 crontab 中,在第五个时间字段(星期)和命令之间增加了一个字段。这个字段指定哪个用户应该运行这个命令,一般情况下是根用户。清单 4 给出一个 /etc/crontab 文件示例。

清单 4. /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

在这个示例中,真正的工作由 run-parts 命令执行,它运行 /etc/cron.hourly、/etc/cron.daily 等目录中的脚本;/etc/crontab 仅仅控制执行作业的时间。注意,这里的所有命令都作为根用户运行。还要注意,crontab 可以包含 shell 变量赋值,这些赋值会在运行命令之前执行。

anacron

cron 适合那些连续运行的系统。对于那些常常不开机的系统,比如笔记本计算机,可以使用另一个实用程序 anacron(表示 “anachronistic cron”)调度每日、每周或每月执行的作业。anacron 不处理每小时执行的作业。

anacron 在 /var/spool/anacron 中保留时间戳文件,记录作业运行的时间。当 anacron 运行时,它检查自作业上一次运行以来是否已经经过了所需的天数,如果需要,就运行作业。anacron 的作业表存储在 /etc/anacrontab 中,文件格式与 /etc/crontab 略有不同。与 /etc/crontab 一样,/etc/anacrontab 可以包含环境设置。每个作业有四个字段:

  1. 周期
  2. 延迟
  3. 作业标识符
  4. 命令

周期是天数,但是可以指定为 @monthly,这确保作业每个月只运行一次(无论这个月中有多少天)。延迟是在作业符合运行条件之后,到实际启动它之前等待的分钟数。可以使用这个设置防止在系统启动时集中执行作业。作业标识符可以包含除了斜线(/)之外的所有非空白字符。

/etc/crontab 和 /etc/anacrontab 都通过直接编辑进行更新。不使用 crontab 命令更新这些文件或 /etc/cron.d 目录中的文件。

回页首

在指定的时间运行作业

有时候,需要只运行作业一次而不是定期运行。为此,应该使用 at 命令。要运行的命令是从 -f 选项指定的文件读取的,如果没有使用 -f,那么从 stdin 读取。-m 选项向用户发送邮件,即使命令没有 stdout。-v 选项显示运行作业的时间。这个时间也显示在输出中。

清单 5 给出一个运行 mycrontest.sh 脚本的示例。清单 6 显示在运行作业之后通过邮件发送给用户的输出。注意,这里的输出比对应的 cron 作业输出要简单一些。

清单 5. 使用 at 命令

[ian@lyrebird ~]$ at -f mycrontest.sh -v 10:25
Sat Jul  7 10:25:00 2007

job 5 at Sat Jul  7 10:25:00 2007

清单 6. 来自 at 的作业输出

From ian@lyrebird.raleigh.ibm.com  Sat Jul  7 10:25:00 2007
Date: Sat, 7 Jul 2007 10:25:00 -0400
From: Ian Shields <ian@lyrebird.raleigh.ibm.com>
Subject: Output from your job        5
To: ian@lyrebird.raleigh.ibm.com

It is now 10:25:00 on Saturday

时间的设置可以非常复杂。清单 7 给出几个示例。参见 at 的手册页、/usr/share/doc/at/timespec 文件或 /usr/share/doc/at-3.1.10/timespec 这样的文件(这个示例中的 3.1.10 是 at 包的版本号)。

清单 7. at 命令使用的时间值

[ian@lyrebird ~]$ at -f mycrontest.sh  10pm tomorrow
job 14 at Sun Jul  8 22:00:00 2007
[ian@lyrebird ~]$ at -f mycrontest.sh 2:00 tuesday
job 15 at Tue Jul 10 02:00:00 2007
[ian@lyrebird ~]$ at -f mycrontest.sh 2:00 july 11
job 16 at Wed Jul 11 02:00:00 2007
[ian@lyrebird ~]$ at -f mycrontest.sh 2:00 next week
job 17 at Sat Jul 14 02:00:00 2007
nice 值

nice 值表示一个作业对于其他用户的优先程度。关于 nicerenice 命令的更多信息,参见教程 “LPI 101 考试准备:GNU 和 UNIX 命令”。

at 命令还有一个 -q 选项。随着队列的增长,作业的 nice 值也会增长。 还有一个 batch 命令,它与 at 命令相似,但是作业只在系统负载足够低时运行。这些特性的细节参见手册页。

回页首

管理调度的作业

列出调度的作业

可以管理 cron 和 at 作业。使用 crontab 命令和 -l 选项列出 crontab,使用 atq 命令显示用 at 命令加入队列中的作业,见清单 8。

清单 8. 显示调度的作业

[ian@lyrebird ~]$ crontab -l
0,20,40 22-23 * 7 fri-sat /home/ian/mycrontest.sh
[ian@lyrebird ~]$ atq
16      Wed Jul 11 02:00:00 2007 a ian
17      Sat Jul 14 02:00:00 2007 a ian
14      Sun Jul  8 22:00:00 2007 a ian
15      Tue Jul 10 02:00:00 2007 a ian

如果希望查看 at 调度执行的实际命令,那么可以使用 at 命令并加上 -c 选项和作业号。您会注意到,在发出 at 命令时生效的大多数环境设置会随调度的作业一起保存。清单 9 给出清单 7 和清单 8 中作业 15 的部分输出。

清单 9. 使用 at -c 并加上作业号

#!/bin/sh
# atrun uid=500 gid=500
# mail ian 0
umask 2
HOSTNAME=lyrebird.raleigh.ibm.com; export HOSTNAME
SHELL=/bin/bash; export SHELL
HISTSIZE=1000; export HISTSIZE
SSH_CLIENT=9.67.219.151\ 3210\ 22; export SSH_CLIENT
SSH_TTY=/dev/pts/5; export SSH_TTY
USER=ian; export USER
 ...
HOME=/home/ian; export HOME
LOGNAME=ian; export LOGNAME
 ...
cd /home/ian || {
         echo 'Execution directory inaccessible' >&2
         exit 1
}
${SHELL:-/bin/sh} << `(dd if=/dev/urandom count=200 bs=1 \
   2>/dev/null|LC_ALL=C tr -d -c '[:alnum:]')`

#!/bin/bash
 echo "It is now $(date +%T) on $(date +%A)"

注意,我们脚本文件的内容已经复制在一个 here-document 中,这个 here-document 将由 SHELL 变量指定的 shell 执行(如果没有设置 SHELL 变量,就使用 /bin/sh)。关于 here-document 的信息参见教程 “LPI 101 考试准备,主题 103:GNU 和 UNIX 命令”。

删除调度的作业

可以使用 cron 命令和 -r 选项删除所有调度的 cron 作业,见清单 10。

清单 10. 显示并删除 cron 作业

[ian@lyrebird ~]$ crontab -l
0,20,40 22-23 * 7 fri-sat /home/ian/mycrontest.sh
[ian@lyrebird ~]$ crontab -r
[ian@lyrebird ~]$ crontab -l
no crontab for ian

要删除系统 cron 或 anacron 作业,应该编辑 /etc/crontab、/etc/anacrontab 或者编辑或删除 /etc/cron.d 目录中的文件。

可以使用 atrm 命令加作业号删除用 at 命令调度的一个或多个作业。多个作业应该用空白分隔。清单 11 给出一个示例。

清单 11. 用 atq 和 atrm 显示并删除作业

[ian@lyrebird ~]$ atq
16      Wed Jul 11 02:00:00 2007 a ian
17      Sat Jul 14 02:00:00 2007 a ian
14      Sun Jul  8 22:00:00 2007 a ian
15      Tue Jul 10 02:00:00 2007 a ian
[ian@lyrebird ~]$ atrm 16 14 15
[ian@lyrebird ~]$ atq
17      Sat Jul 14 02:00:00 2007 a ian

回页首

配置用户对作业调度的访问

如果文件 /etc/cron.allow 存在,那么非根用户必须在其中列出,才能使用 crontab 和 cron 设施。如果 /etc/cron.allow 不存在,但是 /etc/cron.deny 存在,那么其中列出的非根用户不能使用 crontab 或 cron 设施。如果这两个文件都不存在,那么只允许超级用户使用这个命令。空的 /etc/cron.deny 文件允许所有用户使用 cron 设施,这是默认情况。

/etc/at.allow 和 /etc/at.deny 文件对 at 设施起相似的作用。

回页首

了解更多信息

分享这篇文章……

digg 将这篇文章提交到 Digg
del.icio.us 发布到 del.icio.us
Slashdot 提交到 Slashdot!

如果想了解关于 Linux 管理任务的更多信息,请阅读教程 “LPI 102 考试准备:管理任务”,或者参见下面的 参考资料。不要忘记 rate 这个页面

 

参考资料

学习

获得产品和技术

  • 索取 SEK for Linux,这套 DVD(两张)包含来自 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的最新 IBM 试用版 Linux 软件。
  • 使用 IBM 试用软件 构建您的下一个 Linux 开发项目,这些软件可以从 developerWorks 直接下载。

讨论

 

关于作者

Ian Shields

Ian Shields 为 developerWorks Linux 专区的许多 Linux 项目工作。他是 IBM 北卡罗莱那州 Research Triangle Park 的一名高级程序员。他于 1973 年作为一名系统工程师加入 IBM 位于澳大利亚堪培拉的子公司。之后,在加拿大蒙特利尔和北卡罗莱那州 RTP 从事通信系统和普及运算。他拥有多项专利并发表了若干篇论文。他毕业于 Australian National University,本科学位是纯数学和哲学。他拥有北卡罗来纳州立大学的计算机硕士和博士学位。您可以通过 ishields@us.ibm.com 与 Ian 联系。

 

机器人 2007-08-31 于 北京

和大家成长一年多了

Posted by 机器人 on 29th 八月 2007 in phpoo

载自:phpoo讨论区

走过的路

       当初我还是个疯狂的游戏迷,除了游戏还是游戏,直到大二结束才意识到自己要学点东西了,后来选择了php,从而也走进了"西瓜籽社团",一起学php,学div+css,学javascript,学linux。。。

当中的苦与甜

       学习是最痛苦的,同时也是最快乐的,痛苦是因为自己的能力得不到赏识,快乐是因为自己的能力得到信任。我们曾经为合作开发一套"BLOG"系统,而奋斗过,虽然失败了;为学div+css而举行一次比赛,虽然最后没有胜利者;为证明自己的观点而争论的天崩地裂,虽然最后还是没有结果;而我们都是为了学习php,才走到一起,虽然最后还是要分开。当中的苦与甜,点点滴滴,都深深的印在了我的心里,以后当了父亲给孩子描述这么一段历史,当了爷爷给孙子孙女也描述这么一段历史,是多么的快乐

以后的路

       在大家沉溺于php学习过程中,"大四"这个词汇悄然走进了我们的生活当中;

"大四了",该为自己生活发愁了;

"大四了",我们马上要面对社会了;

"大四了",我们相聚的时间更少了;

"大四了",真希望多几个"大三"啊~!

不能什么东西都不留给师弟挥一挥衣袖就走,要给师弟们多多指导方向,让他们走的路更直些,而最近在策划CMS系统同时也是放上了开发日程,让我们留他们两个经典系统:图书管理系统(入门)、CMS系统(进阶),而我们一直为这奋斗着,让我们学校对php感兴趣的同学都能知道过我们的存在,我们的神话。

 

搜索结果关键字高亮技巧

Posted by 机器人 on 27th 八月 2007 in php/javascript

传统方法:

<?php
    $arrKwd = array('dd','s','t','l','e');
    $str = 'ddse';
    foreach ($arrKwd AS $v){
        $str = preg_replace('/'.$v.'/i','<span style="color:red">'.$v.'</span>',$str);
    }
    echo $str;
?>

运行结果:

<e="color:red">le="coe="color:red">lor:red">tye="color:red">le="coe="color:red">lor:red">span e="color:red">le="coe="color:red">lor:red">tye="color:red">le="coe="color:red">lor:red">se="color:red">le="coe="color:red">lor:red">

tye="color:red">le="coe="color:red">lor:red">dde="color:red">le="coe="color:red">lor:red">tye="color:red">le="coe="color:red">lor:red">

span>e="color:red">le="coe="color:red">lor:red">tye="color:red">le="coe="color:red">lor:red">se

分析:当关键字中含有<>中的HTML关键字字符时,同样会对这些字符进行替换,所以出现了样式混乱的状况。还有效率方面,每次循环都得对字符串进行全新扫描,效率很低。

正确做法:

引入概念(反向引用)。

 

<?php
    $tmpKwd = 'dd|s|t|l|e';
    $str = 'dddaavvst';
    $tmpString = preg_replace('/('.$tmpKwd.')/i','<span style="color:red">\\1</span>',$str);
    echo $tmpString;
?>

 运行结果:

dddaavvst

现象:达到我们的目的,而且对于多个关键字,是一次进行替换完成。效率大大提高。

//1(后向引用)主要是靠它来保存我们每次匹配的结果。

机器人 2007-8-27 于 北京

 

正则表达式常用语法

Posted by 机器人 on 27th 八月 2007 in php/javascript

载自:互联网

前言

正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题。


1. 引子

  目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子。

  正则表达式的使用,可以通过简单的办法来实现强大的功能。为了简单有效而又不失强大,造成了正则表达式代码的难度较大,学习起来也不是很容易,所以需要付出一些努力才行,入门之后参照一定的参考,使用起来还是比较简单有效的。

例子: ^.+@.+\\..+$

 

  这样的代码曾经多次把我自己给吓退过。可能很多人也是被这样的代码给吓跑的吧。继续阅读本文将让你也可以自由应用这样的代码。

  注意:这里的第7部分跟前面的内容看起来似乎有些重复,目的是把前面表格里的部分重新描述了一次,目的是让这些内容更容易理解。

2. 正则表达式的历史

  正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts

这两位神经生理学家研究出一种数学方式来描述这些神经网络。

  1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和

Pitts

早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。

  随后,发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson 是 Unix

的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。

  如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。

 

3. 正则表达式定义

  正则表达式(regular

expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。

  • 列目录时, dir *.txt或ls

    *.txt中的*.txt就是一个正则表达式,因为这里*与正则式的*的含义是不同的。

 

  正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

3.1 普通字符

  由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。

3.2 非打印字符

字符 含义
\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x

的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。

\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。

 

3.3 特殊字符

  所谓特殊字符,就是一些有特殊含义的字符,如上面说的"*.txt"中的*,简单的说就是表示任何字符串的意思。如果要查找文件名中有*的文件,则需要对*进行转义,即在其前加一个\。ls

\*.txt。正则表达式有以下特殊字符。

 

特别字符 说明
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则

$ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字符本身,请使用 \$。

( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用

\( 和 \)。

* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
. 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n'

匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。

^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配

^ 字符本身,请使用 \^。

{ 标记限定符表达式的开始。要匹配 {,请使用 \{。
| 指明两项之间的一个选择。要匹配 |,请使用 \|。
  • 构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。

 

 

3.4 限定符

  限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有*或+或?或{n}或{n,}或{n,m}共6种。

*、+和?限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。

正则表达式的限定符有:

字符 描述
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。*

等价于{0,}。

+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及

"zoo",但不能匹配 "z"。+ 等价于 {1,}。

? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或

"does" 中的"do" 。? 等价于 {0,1}。

{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的

'o',但是能匹配 "food" 中的两个 o。

{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的

'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。

{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m

次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于

'o?'。请注意在逗号和两个数之间不能有空格。

3.5 定位符

  用来描述字符串或单词的边界,^和$分别指字符串的开始与结束,\b描述单词的前或后边界,\B表示非单词边界。不能对定位符使用限定符。

3.6 选择

  用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。但用圆括号会有一个副作用,是相关的匹配会被缓存,此时可用?:放在第一个选项前来消除这种副作用。

其中?:是非捕获元之一,还有两个非捕获元是?=和?!,这两个还有更多的含义,前者为正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串,后者为负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。

3.7 后向引用

  对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储。存储子匹配的缓冲区编号从

1 开始,连续编号直至最大 99 个子表达式。每个缓冲区都可以使用 '\n' 访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数。

可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对相关匹配的保存。

4. 各种操作符的运算优先级

  相同优先级的从左到右进行运算,不同优先级的运算先高后低。各种操作符的优先级从高到低如下:

操作符 描述
\ 转义符
(), (?:), (?=), [] 圆括号和方括号
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, \anymetacharacter 位置和顺序
| “或”操作

5. 全部符号解释

字符 描述
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个

向后引用、或一个八进制转义符。例如,’n’ 匹配字符 "n"。’\n’ 匹配一个换行符。序列 ‘\\’ 匹配 "\" 而 "\(" 则匹配

"("。

^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^

也匹配 ‘\n’ 或 ‘\r’ 之后的位置。

$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$

也匹配 ‘\n’ 或 ‘\r’ 之前的位置。

* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。*

等价于{0,}。

+ 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 "zo" 以及

"zoo",但不能匹配 "z"。+ 等价于 {1,}。

? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或

"does" 中的"do" 。? 等价于 {0,1}。

{n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 "Bob" 中的

‘o’,但是能匹配 "food" 中的两个 o。

{n,} n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配 "Bob" 中的

‘o’,但能匹配 "foooood" 中的所有 o。’o{1,}’ 等价于 ‘o+’。’o{0,}’ 则等价于 ‘o*’。

{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m

次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。’o{0,1}’ 等价于

‘o?’。请注意在逗号和两个数之间不能有空格。

? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m})

后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",’o+?’

将匹配单个 "o",而 ‘o+’ 将匹配所有 ‘o’。

. 匹配除 "\n" 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象

‘[.\n]‘ 的模式。

(pattern) 匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches

集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用

‘\(‘ 或 ‘\)’。

(?:pattern) 匹配 pattern

但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, ‘industr(?:y|ies)

就是一个比 ‘industry|industries’ 更简略的表达式。

(?=pattern) 正向预查,在任何匹配 pattern

的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,’Windows

(?=95|98|NT|2000)’ 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1"

中的

"Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

(?!pattern) 负向预查,在任何不匹配 pattern

的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如’Windows

(?!95|98|NT|2000)’ 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000"

中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始

x|y 匹配 x 或 y。例如,’z|food’ 能匹配 "z" 或 "food"。’(z|f)ood’

则匹配 "zood" 或 "food"。

[xyz] 字符集合。匹配所包含的任意一个字符。例如, ‘[abc]‘ 可以匹配 "plain"

中的 ‘a’。

[^xyz] 负值字符集合。匹配未包含的任意字符。例如, ‘[^abc]‘ 可以匹配 "plain"

中的’p'。

[a-z] 字符范围。匹配指定范围内的任意字符。例如,’[a-z]‘ 可以匹配 ‘a’ 到 ‘z’

范围内的任意小写字母字符。

[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,’[^a-z]‘ 可以匹配任何不在

‘a’ 到 ‘z’ 范围内的任意字符。

\b 匹配一个单词边界,也就是指单词和空格间的位置。例如, ‘er\b’

可以匹配"never" 中的 ‘er’,但不能匹配 "verb" 中的 ‘er’。

\B 匹配非单词边界。’er\B’ 能匹配 "verb" 中的 ‘er’,但不能匹配

"never" 中的 ‘er’。

\cx 匹配由 x 指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x

的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。

\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]‘。
\W 匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]‘。
\xn 匹配 n,其中 n

为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,’\x41′ 匹配 "A"。’\x041′ 则等价于 ‘\x04′ &

"1"。正则表达式中可以使用 ASCII 编码。.

\num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,’(.)\1′

匹配两个连续的相同字符。

\n 标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式,则 n

为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。

\nm 标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式,则

nm 为向后引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m

均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。

\nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字

(0-7),则匹配八进制转义值 nml。

\un 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如,

\u00A9 匹配版权符号 (?)。

 

6. 部分例子

正则表达式 说明
/\b([a-z]+) \1\b/gi 一个单词连续出现的位置
/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ 将一个URL解析为协议、域、端口及相对路径
/^(?:Chapter|Section) [1-9][0-9]{0,1}$/ 定位章节的位置
/[-a-z]/ A至z共26个字母再加一个-号。
/ter\b/ 可匹配chapter,而不能terminal
/\Bapt/ 可匹配chapter,而不能aptitude
/Windows(?=95 |98 |NT )/ 可匹配Windows95或Windows98或WindowsNT,当找到一个匹配后,从Windows后面开始进行下一次的检索匹配。

 

7. 正则表达式匹配规则

7.1 基本模式匹配

一切从最基本的开始。模式,是正规表达式最基本的元素,它们是一组描述字符串特征的字符。模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符、重复出现,或表示上下文。例如:

^once

 

  这个模式包含一个特殊的字符^,表示该模式只匹配那些以once开头的字符串。例如该模式与字符串"once upon a time"匹配,与"There once

was a man from NewYork"不匹配。正如如^符号表示开头一样,$符号用来匹配那些以给定模式结尾的字符串。

bucket$

 

  

这个模式与"Who kept all of this cash in a

bucket"匹配,与"buckets"不匹配。字符^和$同时使用时,表示精确匹配(字符串与模式一样)。例如:

^bucket$

 

  

只匹配字符串"bucket"。如果一个模式不包括^和$,那么它与任何包含该模式的字符串匹配。例如:模式

once

 

与字符串

There once was a man from NewYork

Who kept all of his cash in a bucket.

 

是匹配的。

在 该模式中的字母(o-n-c-e)是字面的字符,也就是说,他们表示该字母本身,数字也是一样的。其他一些稍微复杂的字符,如标点符号和白字符(空格、制 表符等),要用到转义序列。所有的转义序列都用反斜杠(\)打头。制表符的转义序列是:\t。所以如果我们要检测一个字符串是否以制表符开头,可以用这个 模式:

^\t

 

类似的,用\n表示“新行”,\r表示回车。其他的特殊符号,可以用在前面加上反斜杠,如反斜杠本身用\\表示,句号.用\.表示,以此类推。

7.2 字符簇

在INTERNET的程序中,正规表达式通常用来验证用户的输入。当用户提交一个FORM以后,要判断输入的电话号码、地址、EMAIL地址、信用卡号码等是否有效,用普通的基于字面的字符是不够的。

所以要用一种更自由的描述我们要的模式的办法,它就是字符簇。要建立一个表示所有元音字符的字符簇,就把所有的元音字符放在一个方括号里:

[AaEeIiOoUu]

 

这个模式与任何元音字符匹配,但只能表示一个字符。用连字号可以表示一个字符的范围,如:

[a-z] //匹配所有的小写字母

[A-Z] //匹配所有的大写字母

[a-zA-Z] //匹配所有的字母

[0-9] //匹配所有的数字

[0-9\.\-] //匹配所有的数字,句号和减号

[ \f\r\t\n] //匹配所有的白字符

 

同样的,这些也只表示一个字符,这是一个非常重要的。如果要匹配一个由一个小写字母和一位数字组成的字符串,比如"z2"、"t6"或"g7",但不是"ab2"、"r2d3"

或"b52"的话,用这个模式:

^[a-z][0-9]$

 

尽管[a-z]代表26个字母的范围,但在这里它只能与第一个字符是小写字母的字符串匹配。

前面曾经提到^表示字符串的开头,但它还有另外一个含义。当在一组方括号里使用^是,它表示“非”或“排除”的意思,常常用来剔除某个字符。还用前面的例子,我们要求第一个字符不能是数字:

^[^0-9][0-9]$

 

这个模式与"&5"、"g7"及"-2"是匹配的,但与"12"、"66"是不匹配的。下面是几个排除特定字符的例子:

[^a-z] //除了小写字母以外的所有字符

[^\\\/\^] //除了(\)(/)(^)之外的所有字符

[^\"\'] //除了双引号(")和单引号(‘)之外的所有字符

 

特殊字符"."

(点,句号)在正规表达式中用来表示除了“新行”之外的所有字符。所以模式"^.5$"与任何两个字符的、以数字5结尾和以其他非“新行”字符开头的字符串匹配。模式"."可以匹配任何字符串,除了空串和只包括一个“新行”的字符串。

PHP的正规表达式有一些内置的通用字符簇,列表如下:

字符簇 含义

[[:alpha:]] 任何字母

[[:digit:]] 任何数字

[[:alnum:]] 任何字母和数字

[[:space:]] 任何白字符

[[:upper:]] 任何大写字母

[[:lower:]] 任何小写字母

[[:punct:]] 任何标点符号

[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]

 

7.3 确定重复出现

到现在为止,你已经知道如何去匹配一个字母或数字,但更多的情况下,可能要匹配一个单词或一组数字。一个单词有若干个字母组成,一组数字有若干个单数组成。跟在字符或字符簇后面的花括号({})用来确定前面的内容的重复出现的次数。

字符簇 含义

^[a-zA-Z_]$ 所有的字母和下划线

^[[:alpha:]]{3}$ 所有的3个字母的单词

^a$ 字母a

^a{4}$ aaaa

^a{2,4}$ aa,aaa或aaaa

^a{1,3}$ a,aa或aaa

^a{2,}$ 包含多于两个a的字符串

^a{2,} 如:aardvark和aaab,但apple不行

a{2,} 如:baad和aaa,但Nantucket不行

\t{2} 两个制表符

.{2} 所有的两个字符

 

这 些例子描述了花括号的三种不同的用法。一个数字,{x}的意思是“前面的字符或字符簇只出现x次”;一个数字加逗号,{x,}的意思是“前面的内容出现x 或更多的次数”;两个用逗号分隔的数字,{x,y}表示“前面的内容至少出现x次,但不超过y次”。我们可以把模式扩展到更多的单词或数字:

^[a-zA-Z0-9_]{1,}$ //所有包含一个以上的字母、数字或下划线的字符串

^[0-9]{1,}$ //所有的正数

^\-{0,1}[0-9]{1,}$ //所有的整数

^\-{0,1}[0-9]{0,}\.{0,1}[0-9]{0,}$ //所有的小数

 

最 后一个例子不太好理解,是吗?这么看吧:与所有以一个可选的负号(\-{0,1})开头(^)、跟着0个或更多的数字([0-9]{0,})、和一个可选 的小数点(\.{0,1})再跟上0个或多个数字([0-9]{0,}),并且没有其他任何东西($)。下面你将知道能够使用的更为简单的方法。

特殊字符"?"与{0,1}是相等的,它们都代表着:“0个或1个前面的内容”或“前面的内容是可选的”。所以刚才的例子可以简化为:

^\-?[0-9]{0,}\.?[0-9]{0,}$

 

特殊字符"*"与{0,}是相等的,它们都代表着“0个或多个前面的内容”。最后,字符"+"与

{1,}是相等的,表示“1个或多个前面的内容”,所以上面的4个例子可以写成:

^[a-zA-Z0-9_]+$ //所有包含一个以上的字母、数字或下划线的字符串

^[0-9]+$ //所有的正数

^\-?[0-9]+$ //所有的整数

^\-?[0-9]*\.?[0-9]*$ //所有的小数

 

当然这并不能从技术上降低正规表达式的复杂性,但可以使它们更容易阅读。

不容易啊!!(工作的第二个双休日)

Posted by 机器人 on 26th 八月 2007 in mylife

哎!大家呆一起这么长时间,居然没有一张集体照,算是比较遗憾,由于现在我们分散也比较大,工作的工作,回家的回家,情况多种多样,想拍一张集体照是相当的不容易啊。

虽然今天还有部分同学没有来,但我们的主力队伍基本上是到齐了,呵呵,这几张照片真是很不容易。

2007-08-25 拍于 北京圆明园学院(北门)。

小白:陪我们差不多两年的小狗。

 

先等一下,小白去哪了,让它和我们一起拍。

hqlong

小白你的干嘛!拍照了,找你老半天了,还不好意思,躲着呢?

hqlong

有什么不好意思的,不就拍照吗?快拍呀,还愣着干嘛,我都等的不赖烦了。

hqlong

真受不了你们了,我来了,你们又不拍,哎!先做个俯卧撑俯吧!锻炼锻炼

小白

好像少了谁?对了,杨煌去哪了?

机器人2007年8月26日于 北京(正下着雨)

余世维南京邮电的讲座《成功经理人》笔记(收藏)

Posted by 机器人 on 22nd 八月 2007 in 未分类
余世维南京邮电的讲座《成功经理人》笔记

——————第一课——————

1、不要常常说“我以为”,而是说“这是我的错”;

2、时间观念强、勇于承担责任;

3、思想行为的教育与培养;

4、做事:想法—促动—行动—习惯;

5、不要总把职称挂在嘴边;

6、在工作时间内做好事情。

7、做人要敢于承担责任,而不是为自己找借口!

8、别说:“我以为”,只能说:“我犯了一个错误….我错了。"

9、12:03分开会很特别。

10.“教育”是第一口号,每个人都需要时时受教育,要敢于承担责任。

11.一个成功的人士,到了晚上是不用带手机的。

12.一个主管只会压制自已---叫做怕

      一个主管只会纠正自已---乱

      一个主管只会节约自已---贱

13、一个人、一个公司要有尊严,不能坏了规举

14、企业体系犹如金字塔,高层和根基再好,底层都不能烂,否则整个塔(企业) 就会倒下

15、一个企业,作为一个主管,不应纵容没有能力的人,否则将来只会坏了企业

16、计划订出来不是拿出来给别人看的,最终要看的是效果,没有效果的计划应当 废掉

17、做人要有尊严,“一生只做一件事。”

18.管理 不等于 比赛看看誰的爱最多。

19.别纵容犯了错的人。

20.别说自已是一个很有效率的人,应该说是个有效果的人。

21.不能用同一种思维去做事。

22.成功的人在很年轻的时候就做了很多成功的事。

23.别纵容犯了错误的人,长此以久会非常难管制的。

24.工作就工作,娱乐就娱乐,工作时就别谈论娱乐的事。

25.自已鞠躬尽瘁没用,有用的是让你的下属机构变得更加的坚固。

26.不忙时,主动帮助别人。

——————第三课——————

1、一个公司就是一个整体 不能没有伦理。

2、要善待自己的下属,但不能让下属把自己当成哥们。

3、做任何事都要讲效果,不要做没有效果的事、不要写没有效果的文章、不要开没有效果的会。

4、从此以后,做事就不要做人、做人就不要做事。

5、文官体系的重要性;

6、从小养成做事成功的习惯;

7、世界上只有两种人:一种努力地在表现自己,另一种努力地在为自己辩解;

8、不要用一种方法去管理一群人;

9、性格决定命运;

10、帮助你成长的是你的敌人;

11、自动报告你的工作进度;

12、对上司的提问有问必答,而且清楚;

13、充实自己、努力学习,才能了解上司的言语;

14、接受批评,不犯二次同样的过错;

15、不忙的时候,主动帮助他人;

16、现在是新八国联军时代;

17、世界500强调查表明在中国最主要的问题是“用人”;

18、做事及时、统一、默契。

19.永远没有一个工作是一个来吃光的。

20.不管你的职位怎样,每个职员都有责任来处理有关本公司的任务。

21.做事别有层次观念,这样做事很失败。

22.一个公司如果能快速的开绿灯,做事就不会有脱拉。

23.“勾通”第一。

24.一个好的主管用不着天天都开会,而是一但发现问题就马上解决。

25.领导对自己的下属要重视,下属受到上司的重视会加倍的努力做好工作。

26.开会时间最长不超过2个小时,一但超过这个时间,人的思想就很难集中。

27.开会人数不宜太多,分两个层次,内为必须参加者,为七到八人,外为

可参加也可不参加的人。

28、建立威信,讲究论理,注意尊严;

29、做人就不要做事,做事就不要做人;

30、不要常常对别人说你是个有效率的人,而应说是讲效果的人;

——————第四课——————

1.敌人是帮助我们成长的,同时我们也是会帮助敌人成长。

2、一个人的一生不可能做完全部的事情,那么就把不重要不紧急的事情去掉,做一些重要的紧急的

3、有效果的事情。

4、要接受领导的批评,不犯二次过错。

5、主动向你的上司报告你的工作进度。

6、自已不忙时,要主动帮助别人。

7、放下小的事情,看大的目标;

8、不当主管,只作哥们;

9、日本人应酬分等级——跟下属在一起永远是主管,要有威严,公司要有伦理;

10、一个公司没有标准,主管没有把标准贯彻下去,就没有尊严,人有标准活得才有味道;

11、要注意效果,不要过分强盗效率;

12、一将功名万骨枯;

13、主管天天开会;

14、对任何事情和问题反映迟纯;

15、忘了顾客是谁;

16、及时作业;

17、零库存; 

18、做重要的事,做有效果的事。

19.主动向上司汇报自己的工作进度,让上司知道情况。

20.接受批评,不犯两次过错。(可以这样理解:一次是不知道,二次是不小心, 三次就不理)。

21.自已不忙时,要主动帮助别人,学会乐于助人。

22.对上司的提问,有问必答;

23.要养成良好的习惯,树立正确的人生观,这里让我感触很深的是他拿他的女 儿来举例,说明从小就要养成好习惯。

24.主管如要奖励下属的话,就必须平均分红。

25.主管是个领头人,不应该破坏公司规矩,每个公司都有标准作业,每个部门都应水平勾通。

26.团队 不等于 群体。

27.一个好的主管应该相信你的下属,让你的下属有发挥的空间,主管的位置应该站在教练的

立场上。

28.团队是一个有思考性、有自主性、有合作性的组织。

29.记住死的知识是没用的,有用的是体会其中的理论。

30.血离不开血管,没有血管,血就没法动。

31.开会时应该让做战的士兵先发言,上司们后发言。

32.一群人一起表决,很容易走极端。

33.“少数复从多数”是不一定正确的,很容易团队偏移,所以开会时要分成三层来开。

34.<“部属对我们的报告,永远少于我们的希望”,所以我们要做到以下几点:>

35、自动报告你的工作进度---让上司知道

36、对上司的询问,有问必答,而且清楚---让上司放心

37、充实自己,努力学习,才能了解上司的言语---让上司轻松

38、接受批评,不犯二次过错---让上司省事(犯错误第一次是不知道,第二次是不小心,第三次是故意)

39、不忙的时候主动帮助别人---让上司有效(这是一个团队时代,不能指望英雄)

40、毫无怨言的接受任务---让上司圆满

41、对自己的业务,主动提出改善计划---让上司进步

——————第五课——————

1、老板绝对不会有错!

2、如果发现老板有错,一定是我看错!

3、如果我没有看错,一定是因为我的错,才害老板犯错

4、如果是他自己的错,只要他不认错,那就是我的错。

5、如果老板不认错,我还坚持他有错,那就是我的错。

6、总之老板绝对不会有错,这句话绝对不会错。

7、主管如要奖励下属的话,就必须平均分红。

8.主管是个领头人,不应该破坏公司规矩,每个公司都有标准作业,每个部门都应水平勾通。

9.团队 不等于 群体。

10.一个好的主管应该相信你的下属,让你的下属有发挥的空间,主管的位置应该站在教练的

立场上。

11.团队是一个有思考性、有自主性、有合作性的组织。

12.记住死的知识是没用的,有用的是体会其中的理论。

13.血离不开血管,没有血管,血就没法动。

14.开会时应该让做战的士兵先发言,上司们后发言。

15.一群人一起表决,很容易走极端。

16.“少数复从多数”是不一定正确的,很容易团队偏移,所以开会时要分成三层来开。

17、团队精神的重要性;

18、IBM东京事件(奖金分配);

19、IBM总厂事件(门卫的态度);

20、现代企业的组织、水平沟通;

21、标准作业;

22、团队与群体的不同之处及差别;

23、群体迷失;

24、群体偏移;

25、思考性;

26、自主性;

27、合作性;

28、我打仗从不开会(威林顿将军);

29、好多事都是被逼出来的;

30、吃亏就是占便宜;

31、我还有什么可以被利用的价值;

32、人力资源会计,抓住老顾客;

33、会抱怨的客户是好客户,回头率65%;

34、服从老板的安排;

35、对自己的业务,主动提出改善计划;

36、毫无怨言地接受任务;

37、做事情要讲究效果。

做事情要讲究准确、精确。

做到0库存计划。

管理者不要犯以下错误:

1、主管天天开会。

2、对任何问题反应迟顿。

3、忘记顾客是谁。

38、要建立新传统。

39、全世界没有一个人是吃一口饭的,所以一个人不要太嚣张。

40、要把公司事情当作是自己的事情。

41、经理只做一些思考和计划,其他什么事情都不要做,都交给下属完成。

——————第六课——————

1.跨越部门勾通。

2.人不仅要锻练自已的IQ,而且也要不段的锻练EQ。

3.遇到困难时,我们要做有向心力的人。

4.现代是团队时代。

5.要不断的死盯着你的目标,有外来干扰时,也要有所反应,但处理完之后,还要转回到原目

标。

6.要不断的适应环境。

7.80%成功的人往往是EQ得分很高的人。

8.一个人的EQ高不高,也主要体现在你是否是个顾全大局的人。

9.做主管的不要与其他人妥协,如果大家都妥协是不可能的。

10.如果大家都说你是一个好人或说你是一个坏人,那就说明你有问题,你要想办法让好人都

说你是好人,而不要让那些坏人也跟着说你是好人。

11.公司一定要想办法缩小投资成本、缩短投资时间!

12、企业管理之首:切记主管天天在开会,对任何危机反应迟钝

13、忘了顾客在哪里!公司的组织机构不应该是纵向停顿型组织,

14、而应该是横向的变动型的组织,实行项目经理制!

15、IBM之东京事件也是值得咱们的思考!

16、要意识到顾客至上。

17、得到老板重视的员工会更努力的工作。

18、讲述IBM的故事:对待员工应该一视同仁。

19、三个危机:主管天天在开会;面对危机反应迟迟钝;忘了顾客在哪里?

20、有问题当面解决,不要经常开会,不要经常发E-mail。

21、开会时间最长不超过2个小时(时间观念要强)。

22、“我打仗从来不开会”,这是一种夸张的说话。不可能不开会就能解决

问题。

23、开会应由负责人来主持,谁负责的会议就应该由谁来主持。

24、做事尽量不麻烦别人,只要自己能解决的问题就应该自己解决。

25、有问题应该能过商量来解决,要学会相互沟通。

26、智力;

27、积极;

28、监督;

29、自信;

30、果敢;

31、人与天斗奇乐无穷;

32、要像狗一样的活下去;;

33、多赚一口的故事;

34、全世界都知道我百分之一成功的故事,却没人知道我百分之九十九的失败;

35、危机感;

36、压力感;

37、归属感;

——————第七课——————

1.一个人走路总回头,说明有二心。

2.要稳定自己的情绪。

3.君子心机大,野心大,小人且相反。

4.越是支持的人,它的EQ一定很低,应该控制情绪。

5.要经过几个阶段才可以真正的成功,不可能一步到位的。

6.要控制自已的优点,别老批评别人的缺点。

7.做事都有上个度,要多向好的一面靠,然而也要多注意不好的一面。

8.做伟人的五个条件:智力、积极和主动、监督力、自信、果断。

9.命>运气>风水>积德>读书。

10.人一生当中要不断累积机会、条件。

11、自主性;

12、合作性;

13、妥协问题;

14、共振现象;

15、本位广义;

16、中国是一盘散沙;

17、高IQ低EQ的现象;

18、小时了了,大末必佳;

19、面对环境,要注意周围环境的变化;

20、适应环境;

21、顾全大局;

22、尽职尽责,认规定不认人;

23、加班要合情合理;

24、一个会议尽管让员工参与,发言从小到大,并自动退场;

25、做为一个团队要有:思考性;自主性;协作性;

26、群体迷思:注意“少数”服从“多数”的观念;

27、群体偏移;

28、下属不一定比我们笨,只是没有授权而已;

29、学知识重在思考与运用,不是重在记忆;

30、本组织是横向联系的,现代的观念是水平联系,个个部门都能水平沟通

31底层的人都能与上级纵向沟通;

32、团体的成功才能算是真正的成功;

33.主管对下属要一视同仁,尽量做到对人人都公平。

34.只有这样才不会给下属还来分歧。

35.一个公司就是一个团队,而不是一个群体。

36.一个主管应该象一个球队的教练,而下属就是球员。这样才叫真正的TEAM。

37.主管应该多听下属的发言,因为他们比较了解实际情况。

38.很多时候不是多数人说了对,所以不能以少数服从多数来做论断。

39.一个公司最容易破坏规矩的是主管、上司、和一些高级干部。

40.如果这家伙出了乱,那么整个公司就会乱。

——————第八课——————

1.一个国家没有敌人,那么这个国家就会消亡。

2.没有竞争就没有进步。

3.一个人要经得起逆境。

4.一生中会受到许多逆境、挫折、压抑,但我们不能退缩。

5.不要给自已加压力,会减寿的。

6.要给自已留有一口气,这样才能生存下去。

7.危机提高警觉。

8.老板的三种警觉:危机感、压力感、归宿感。

9.EQ+IQ=AQ

10.我们应该乐观地面对世界,不应该太忧郁。

11、喜怒不形如色;

12、人都有缺点;

14、坚持的人不达目的决不罢休;

15、和睦是一个团队生存的关键;

16、严历是纪律的保障;

17、机警的人比较细心;

伟人理论;

18、智力;

19、积极;

20、监督;

21、自信;

22、果敢;

23、用人单位用人原则:来自不同地域,不同的行业,不同的学校;

24、做事不能太馁协;

25、角色的转换:正如不当家不知柴米油盐,不做主管不知主管的难;

26、对环境的变化要第敏感,随环境的变化而变化

(建议看《谁动了我的奶酪》这本书);

27、要有向心力,向共同的目标一起努力;

28、对不良风气、习惯能做到“杀鸡警猴”;

29、一个事业成功的人EQ都很高;

30、IQ代表学历,EQ代表情绪能力;

31、EQ低的人考虑问题不周到,不顾全大局;

32.适当的时候可以“委屈求全”;

33.中国人有个不好的传统习惯----喜欢自己吃自己人。不能一致对外。

34.在同一个公司,最好不要有同一学校、同一家族、同一个地方、同一层次一人。

35.这样会引起共振。

36.妥协: 主管不要时时以下属来妥协。

37.不可能做得出让天下每个的都满足的事,所以不要妥协。

38.要多让下属有实践机会,要给于他们有一定的权力去发挥,说不定会对公司有帮助。

39.要学会运用一个团队的力量去发展公司。

40.IQ EQ,现在主要是要有高EQ

41.小时了了,大时未佳。

42.社会不同了,不要一天到晚只强调科技理解,提倡高IQ。

43.成功的的有80%都是高EQ的,有时要委屈求全,这才是历害

——————第九课——————

1.别常在别人面前说你家中的事,但可听取别人的事,这是别人的经验和心血。

2.别告诉别人你很痛苦,要化解压力。

3.人生有许多的悲哀,只要掌握就可以了,没有什么事是做不了的。

4.有成就的人,回到家不会有暴力倾向。

5.两个人之间不可以同一天生气,要相互理解。

6.要肯定一个人的贡献。

7.要沉得住气。

8.每一个工作都有压力,别让压力压倒了自已。

9.建立“无事不可谈”的良好勾通方式。

10.不要摆出“累毙了”的样子。

11、监督;

12、自信;

13、果敢;

14、人与天斗奇乐无穷;

15、要像狗一样的活下去;

16、多赚一口的故事;

17、全世界都知道我百分之一成功的故事,却没人知道我百分之九十九的失败;

老板的三感

18、危机感;

19、压力感;

20、归属感;

21、对错误越坚持,则他的EQ越低;

22、EQ就是控制情绪的波动;

23、谨慎、坚持、和睦、严厉;

24、成为一个伟人的条件:

(1) 自资;(2)积极、主动;(3)自信;(4)果感;

25、成功的可能:一命;二运;三风水;四积德;五读书;

26、成功要靠机会的积累,以及把握时机,该出手时就出手;

不要告诉一个人有缺点,因为人人都有缺点

27、谨慎的人太保守,不敢冒险;

29、严厉的人,冷酷,表面是强调纪律;

30、积极的人细心,过度细心的人太拘小节

31、多让部属参与决策

32、做老板的不要在部属面前显示紧张的样子

33、要懂得跟部属疏解压力

34.

——————第十课——————

1.每天列出你四件最重要的事情。

2.主动向你的上司报告你的工作进度。

3.接受批评,不犯两次过错。

4.自已不忙时,要主动帮助别人。

5.帮助你成长的人就是你的敌人。

6.每天总结你的一天下来的做事成果。

7.服从和支持老板的安排。

8.每天努力地学习,知识要跟上自已的上司。

9.事做得好坏是由顾客来决定的。

10.要经常检讨自己“自已还有没有被人利用的价值”。

11、与天地斗,其乐无穷;与人斗,其乐无穷(有所进步,有所成就才如此吧);

12、老板的三种感觉:A、危机感 B、压力感 C、归宿感;

13、一个国家没有外患,则就不会发展;一个企业没有对手,则停步不前;

14、社会的压力与困境的好处:A、增强斗志 B、刺激思维 C、积极进取

15、帮助自已成长的都是你的敌人

16、在面对逆境时要忍受且要迎难而上;

17、没有竞争意识且一凡风顺的人就会安于现状,缺乏斗志;

18、逆境有助于生存,增强斗志;

19、正视逆境,挑战逆境,做生活的勇者;

20、有压力就会有动力,有进取心;

21.逆境的三种程度:

a.个性 b.家庭背景 c.学习成绩 d.社会压力

22.与天地斗,其乐无穷;和人赛,与其乐无穷也。

23.在逆境中成长的人才会有志向,才能磨练自己的意志。

24.不是向钱看齐,而是向前看齐。

25.中国人与美国人的文化不同,而日本人的压力却很大。

26.压力和困境有助于生存,坚持就是胜利。

27.危机可以提高警觉。

28.困境刺激思维。

29.老板应具有的三种感觉:

a.危机感。

b.压力感。

c.归宿感。

30.成功来自百分之九十九的汗水,百分之一的智慧。

——————第十一课——————

1.别常在别人面前说你家中的事,但可听取别人的事,这是别人的经验和心血。

2.别告诉别人你很痛苦,要化解压力。

3.人生有许多的悲哀,只要掌握就可以了,没有什么事是做不了的。

4.有成就的人,回到家不会有暴力倾向。

5.两个人之间不可以同一天生气,要相互理解。

6.要肯定一个人的贡献。

7.要沉得住气。

8.每一个工作都有压力,别让压力压倒了自已。

9.建立“无事不可谈”的良好勾通方式。

10.不要摆出“累毙了”的样子。

11、不要常常说自己有压力;

12、不要对别人你的痛苦(化解压力);

13、面对逆境,保持沉着;

14、做一个主管可以不做事,但要用眼观察;

15、让部属参与决策;

16、不要把部属累跨;

17、做为主管不要一天都紧紧兮兮,要沉得住气;

18、可以通过各种渠道获得下属的反馈信息(如一起去吃饭,水上开会等);

19、三大悲衰:A、选错专业 B、不合适的工作 C、选错对象;

20、遇到问题要冷静,并尽快解决问题,把损失降到最低点;

21.有危机才会有安全感。

22.有压力才会有动力。

23.不要轻意的告诉别人自己的缺点,要自己学会缓解痛苦,化解压力。

24.面对困难要沉着,冷静。

25.面对压力要控制情绪。

26.建立“无事不可谈”的良好沟通管道。

27.不要让下属加班变成家常便饭。

28.要和敌人做朋友,这样才可以知道对方的势力。

29.不要每天都把自己搞成紧张紧张细细的。

30.要经常通过不同的方式,了解下属的近况。

以下橙色的为另个一个人做的摘要 (感谢他以及互联网)

一、经理人常犯的毛病;

二、经理人IQ(智商);

三、经理人EQ(情商);

四、经理人AQ(逆商)。

一、经理人常犯的毛病

柳传志:中国在还没有成长和壮大之前各种压力已经接踵而至。

中国可以用10年的时间学完世界50年的建设,但没有一个国家能够用10年的时间学会辨认50年的思想。今天就可谁能够用10年的时间学会别人50年的思想,谁就可以生存。

世界500强调查表明在中国最主要的问题是“用人”

1.拒绝承担个人的责任

 不要经常说“我以为”

 日本人经常说“这是我们的错”

 社会上有两种人:每天都在那里表现、每天都在为自己辩解

例子:

 自己的小孩从床上跌下来

 美国妇女和自己的孩子

 bucket stop here(杜鲁门)

 美国人、日本人做事很少问自己的主管

做主管的要自己承担起自己的责任

2.没有办法启发自己的下属

 中国的主管:认为下属的教育30%属于自己,70%属于人力资源的事情,恰恰相反,人力资源做的应该是属于一些通识教育

例子:

1. “我的大哥大不要经常打”——授权给下面的人

2. 到美国上任没有一个鬼来接

3. 手机是个心理安慰的工具,重要的是“按部就班”

要随时随地地教育下属

4. 写信封:机会教育

辛苦在前,成功在后

5. 比利时咖啡店老板教人泡咖啡——中国人往往放牛吃草

3.只强调结果,不强调思想

人是先有了思想——>触动——>行为——>习惯——>文化

例子:

1) 民国初年的陈之凡的《剑桥导引》:许多许多的历史才能形成一点传统,许多许多的传统才能形成一点文化

2) 英国人肩上的徽章——中国人的荣耀感不强,对文化的认知不够,主要是没有把触动变为行动

3) 日本东京成田机场过境,早4点准时开门——做事的习惯

4) 德国人发请贴12:03分

5) 墨西哥朋友结婚晚6:00到了9:00才开始

6) 德国 费得力(?)大帝打仗,手下人求他升官,他拿骡子做比较

7) 德国朋友在莱茵河畔教育小孩子

德国在两次世界大战中均是战败国,但现在是世界5强,原因就是靠他们德教育

“在我们国家李每个小孩都是我的子女”

8)拿破仑小时候打架的故事——成功的人从小就养成了成功的思想

4.他们,你们和我们

 我们这里没有他们,只有我们

 天津奥迪斯电梯和日本三菱电梯的对比

 日本成田机场附近买的信任豆腐

5.一视同仁的管理方式

一个钥匙只能开一扇门

用人要用长处

 销售部人员在泰国游玩

 盖章

 表亲被活活气死,从来没有得过第二

 公司人员根据不同特点赋予不同职位

 美国人被车撞和中国人的区别

 一个公司和国家的管理什么时候用法,什么时候用情;李光耀的“管理中国要开明专制”思想

 带人要带要点

6.忘了公司的命脉——利润

 朱鎔基——准备100口棺材,其中1口留给我自己

 青岛啤酒受国务院资助才可以又笑了

 主管的四大责任:利润、就业、福利、品质。除了利润什么都是假的

 韩国学生:读书只发一半奖学金——韩国人做事积极

要把利润看得很重要,作为主管,一定要眼睛向上,不是每天只盯着routine

7.只见问题不看目标

性格左右命运

气度影响格局

——命运呀,万人在你的面前都要俯首

 大导演张艺谋可以教意大利人排杜兰朵

 吃饭都跟不上,你还能干什么!

 克林顿看大目标

 狗的名字叫放下

 ***、邓小平看大问题

把问题看成是机会

 日本三菱员工30万,不裁人,找不姓三菱的人作总经理,计划做到2100年

放下小的事情,看大的目标

8.不当主管,只作哥们

 美国士兵club分等级:soldier club、sergeant club和officer club

 日本人应酬分等级——跟下属在一起永远是主管,要有威严,公司要有伦理

 上海贝尔的门、餐厅、会议室都 体现了公司的威严

 日本染布公司的故事——“一生制作一件事”

 一个公司没有标准,主管没有把标准贯彻下去,就没有尊严,人有标准活的才有味道

9.纵容能力不足的人

管理不等于比赛看看谁的爱最多

做人就不要做事

做事就不要做人

 韩非子:一个主管只会压制自己——怕(事)

一个主管只会纠正自己——乱(了天下)

一个主管只会节省自己——(犯)贱

 日本文官体系

 长江发大水,朱鎔基说“非要枪毙几个”——中国的文官体系一定要重现建立

 台湾经济部长38岁回台湾作部长,39岁累死

 诸葛亮被累死

纵容能力不足的人:部署的能力x×80%×80%。。。 。。。

 北洋舰队丁汝昌的故事

 台湾的教育能力分班问题

10.眼中只有超级巨星

 世界杯中的意大利:“我们这个队伍没有英雄,每一个人都是偶像”

 巴西法国世界杯中的罗那尔多

 要注意效果,不要过分强调效率

 蒋经国:不要开没有效果的会,不要说没有效果的话,不要写没有效果的报告,不要作没有效果的事

 台湾长蓉航空公司空姐都是大专学习

 麦当劳的店长也要给人点餐

 超级明星常常:不感恩、不和群、不妥协

 世界最聪明的人排名:第10:爱因斯坦、8:亚历山大、5:牛顿、2:莎士比亚、1:达文西

 一将功名万骨枯

 日本的乃幕契带,日俄战争

 在上司面前夸奖他的部署

要培养下属,淡化超级巨星

我坚信经理人应该迈向自己的生活目标,除了思考、计划、辅导员工、分配任务、签署文件以外,什么都不做。——美国管理文摘

IQ,主管要够聪明

1. 美国儿童医院,护士办成唐老鸭

2. 台湾医科医院全是女人

我们的管理者要改变重心,三件事情:思考、作计划、培训员工

做事情要有原则:

很重要

很紧急⑴ 不重要

很紧急⑶

很重要

不紧急⑵ 不重要

不紧急⑷

自从有了手机,这种不重要但很紧急的事会越来越多

重要:影响深远

紧急:立即处理

3. 比尔盖茨去求IBM,12年后IBM去求微软:IBM史上以来最大的错误(可口可乐也犯了相同的错误)

做事:

做有效果又有效率的事⑴ 做没效果有效率的事⑶

做有效果无效率的事⑵ 做无效果无效率的事⑷

4. 南京一晚上做了100多个广告,一半的广告是无效的

我们都是三明制:既是别人的上司又常常是别人的下属

你的上司如何看你:

1. 自动报告你的进度——让上司指导

2. 对上司的询问有问必答,而且清楚——让上司放心

3. 充实自己,努力学习,才能了解上司的言语——让上司轻松

4. 接受批评,不犯两次过错——让上司省事

5. 不忙的时候,主动帮他人——让上司有效

6. 毫无怨言地接受任务——让上司圆满

7. 对自己地业务,主动提出改善计划——让上司进步

服从老板6大原则

1. 老板绝对不会有错

2. 如果发现老板有错,一定是我有错

3. 如果我没看错,一定是因为我的错,才害的老板犯错

4. 如果是他自己的错,只要他不认错,那就是我的错

5. 如果老板不认错,我还坚持他有错,那就是我的错

6. 总之,老板绝对不会有错,这句话不会错

体现了对老板的支持,要求做到内部的一直。

帮助自己的老板升官,自己才能升

要成为又好、又快、又省的竞争者,表示要做到:

提高顾客满意程度,同时要缩减生产周期与成本

1. 百事与可口可乐

2. 肯德基主管每天要吃麦当劳,麦当劳主管每天要吃肯德基:差别是管理者,是人

3. 德国的奔驰,日本的奔驰

4. 于世为早上在20层吃早餐,小姐对吃饭的叉子、人命、住的的层数都清楚

5. 泰国的东方饭店——亚洲最好的饭店

6. 买家具的故事:只是买新客户,没有老客户

会抱怨的客户是好客户,回头率在65%

7. 丰田的压缩成本,零库存计划(引出欧盟和亚洲的比较)

建立新传统

大公司就像一个鲸鱼,不时不刻不在吃,但又无事不刻不在饥饿

需要由停顿性组织变为变动型

1. ABB公司(做开关)的问题:安徽邮电局到上海拿开关,因为下班不给出货;厦门ABB原来一个零件到重庆1天,7年后变为7天。

公司大了人与人就失去了联系

维灵顿“我打仗,从来不用开会!”

一个人最有效果的时间是2个小时

如何训练开会:主席话不要太多,要有一定的程序,要有时间限制,不要全员参加

甲——>我——>老总——>他——>丙——>他——>我——>甲——…….

改为:我代着甲——>他

我<——>他

甲<——>丙

2.IBM东京事件:有部分人拿到了年终奖,有些没有拿到,全体辞职,包括拿到年终奖的和没有拿到的,以及其他部门

Team要成功则都成功,不要区别对待

3。IBM总厂事件:IBM的Big Boss,Mr. Vossion带着伊朗王储参观工厂因为身上带来标牌不对,被拦在门外。

在一个公司里,破坏规矩和制度的总是上面的人。

4、肯德基的职员被要求晚上8:00做完明天用的食物,结果拖到10:00,被开除

团队Team≠团体,群体Group

作教练

团队中重要的是要有思考,要自主

群体带来的毛病:1、群体迷失;2、群体偏移

在人的管理之中,喜欢用和自己相同的人容易产生共振现象

运用团队参与的力量

 在里面作团队(偶尔让下属作主管)

 成立专案小组,破解难题

 跨越部门的水平沟通

 自我督导型团队

管理者的EQ(情绪反映)

美国人做的EQ实验:

『尼尔.高曼《EQ》

在自我控制方面,史丹佛大学曾做过,让5岁小孩拿糖果实验,一房间内,每人桌前有一颗糖,主持者要离开房间一会儿,叮咛他们若等回来才吃糖可得两颗,这对 小孩是人格的严格考验,真正实验成果是十多年后,当时懂得等待、愿意控制自己的小孩,高中成绩分数比不能等孩子多了210分,人际关系表现也较圆满。

高曼认为,情绪智商百分之百对健康有影响,焦虑、愤怒、恐惧都使大脑情绪中心联接免疫系统、心脏等其它生理机能受影响,但也不是压抑情绪,而是有效管理, 克服情绪,现在全球的忧郁症患者正有年龄层降低、自杀率升高问题,美国对于10至12岁学童,进行相关情绪测验,显示较悲观者,教师会另行报导专门的EQ 课程,几年之后,再做检测,也确实比原来情况良好。哈佛大学对于婴儿做实验,再追踪他们2至10岁的表现,显示EQ与人天生的细腻敏感与否这些先天的条件 上面,也会有关连,光靠父母教育不够,学校教育制度可以帮忙给些方法。

高曼强调,EQ各元素中「同理心」的形成过程相当要紧,看个寻常娃儿若能在同伴跌倒时,将他扶起,这就是「同理心」,而实验也证明受虐儿童对跌倒同伴反应,却是叫他不许哭,再哭叫打他,追踪没有「同理心」孩子长大后也许就犯下可怕罪行。

和IQ一样,不同的人天生有不同的EQ,有不同的脾气和情绪能力。通过培训IQ的经验指出,人脑的可塑性非常高,适时适当的培训,可以控制甚至弥补EQ的不足或缺陷。

有所大学进行了一项“软糖实验”,证明能为得到两颗软糖而放弃眼前一颗软糖的儿童,十四年后有更卓越的成就。另一所大学四年跟踪研究显示,受EQ培训的学 童,升学就业率上升,问题行为及犯罪率下降。还有香港两位心理学的研究也显示,被派往第五级中学的学生,确定他们是智能不可改变者,一年内成绩每况愈下, 反之,持有“智能可改变”信念的学生,成绩逐渐进步。这些都证明积极的思想、进取的态度、不懈的努力都是令人反败为胜的秘诀。

有不少科学证据显示,学龄前期形成的情感特质,对孩童往后的表现,无论是学业成绩或人际关系,均有相当程度的影响。另一些研究则显示,能爬升高位,做管理 工作或拥有成就的人,多是一些能避免急躁和紧张,有稳定情绪的人,换言之,是一些高EQ的人,而一直受重视的IQ(智商)原来在人们成功的因素中只占 20%。也就是说,EQ是决定成败的决定性的因素。美国心理学家认为,情商比智商更重要。为此,推出的成就方程式为:20%的IQ+80%的EQ= 100%的成功。    

随著社会日渐富庶,现代家庭又多数只有一个小孩,太多的资源都集中他在身上,他的需要很容易获得满足。与此同时社会的竞争越来越激烈,社会制度越来越深化 限制也越来越多,当孩子从安乐窝走到社会,其原本容易获得满足的状态骤然改变,令孩子无法适应过来,便会容易埋怨、投诉、不满,同时也无法调节自己跟环境 的关系,因而感到挫败沮丧,有些更会因不愿意作出妥协来适应现实而被社会摒弃,极端的更会做出反社会行为,如犯罪、自杀等。

父母不能一味地溺爱孩子,不注重EQ的培养。EQ的培养应该从提高这五个方面的能力去做:①了解自己情绪的能力,②控制自己情绪的能力,③以自己情绪激励 自己行为的能力,④了解别人情绪的能力,⑤与别人友好相处的能力。家庭是培养EQ的第一所学校。有高EQ的父母,才有高EQ的小孩。父母要注意身教言教, 要营造出一个和谐安全的家庭气氛,要从孩子一出生起就开始为培养出一个高EQ的孩子使他将来能成功走向社会而持之以恒地努力。』

EQ实验的启示:

 环境的变化:现代社会看谁掌控环境

 传统忠诚度的瓦解

IQ低EQ现象:不能适应环境,不能委曲求全,不能顾全大局领导群众

君子与小人

天下之事,败于小人者十一,败于君子者十九。盖小人之骨柔,其气馁,其欲易售,其易破;惟君子之才品自不同,而己为众所推,其自负也,常亢而不肯下,于是为深刻。为(枉)法,为执拗,不能舍己从人,以依国家之急。

——中山大学研究所试题

控制自己的情绪,对其进行利用和控制。

认清优点和缺点:

 谨慎

 坚持

 和睦

 严厉

 机谨

分析你的特点,注意你的正负面

伟人理论:

1、 智力:包括毕业后读了多少书

2、 积极主动:把该作的做好

3、 监督力

4、 自信

5、 果敢

中国的命相学:

人要成功:1:要靠命好;2:靠运好;3:靠风水;4:靠积德;5:靠读书

西方:

晚上你要保持冷静,因为上帝在拿着灯笼从你家门口经过

AQ(逆商)

预测成功的世界性指标

『逆商AQ与教育

逆商亦即逆境商数这一术语的简称。英文原文是Adversity Qutient,意为逆境商数,简称AQ,即逆商之略写。这一概念称谓首见于美国学者保罗.史托兹博士1997年写就出版的《AQ——逆境商数》一书,是 为作者多年研究之原创。逆商有它自成体系的测试内容、量表和指针,并据此对个体进行逆商测试,用以表示个案逆商发展的相对指针和逆境承挫力之参数。

依据保罗.史托兹的逆商理念,人们处于逆境的耐挫抗争心态和坚忍前行力度,恰似登山攀高,逆水行船,乃人生征途命运之旅正常摩擦系数的主观体验及其承受统合。

众所周知,“Q”之系列研究乃是20世纪学界一大景观。从1903年智商IQ的首次测试,到多重智力MI对IQ的直接挑战,继而凸现情商EQ和德商MQ的 研究热度未尽,随之而来的逆商AQ又风行于世纪之交的欧美学界。从智商IQ到逆商AQ的“Q”之系列研究,立足心理学实验并迁移其成果而活用于教育,走过 了从人类智力因素到非智力因素量化研究近一个世纪的科学探索历程。智商IQ、情商EQ、德商MQ和逆商AQ,堪称20世纪人类对自身多元商数量化测定基础 上定性评估的四大亮点。

根据保罗.史托兹的逆商AQ学说,人们对待逆境和挫折的心态犹如登山攀高,面对崇山峻岭,悬崖峭壁,大致呈现出不屈不挠型、半途而废型和畏缩不前型三大群 体类型,而各群体类型又可细分三种左中右的亚类型,这样总共有九个逆商等级标准。总体上看,逆商AQ是衡量个体逆境条件下坚忍程度、耐挫能力、抗争特质、 生存本领、胆识风范、心态韧性、人情练达、自强力度等诸项个性心理素养的量化标准,是对“人生不如意常十之八九”之逆境思辩的一种量化外现的应对心态的个 案分野,旨在针对逆商AQ之高低对不同个案施以不同的逆商教育之方略。因此,逆商教育,亦称挫折教育、承挫力教育、生存教育等等。

尽管保罗.史托兹博士的逆商AQ理论,在量表指针和测试内容方面尚有不完备之处,且常模的拟定又以西方人群为背景,但毕竟使人们领略了逆商AQ及其逆商教育发展的前景魅力,起码给我们许多借鉴性的教育启迪和理性升华。

逆境相对于顺境。所谓逆境坚忍顺境克制之思辩,古今中外不乏哲论。但对逆境个体心态量化基础上的定性研究,却是20世纪以来人类不懈追求的科学目标之一。 近年来,国际比较教育学界预测,21世纪人类对自身的逆境与顺境承受力度的研究,将成为新的教育科研热点,而顺境的克制力度和平常心态之研究,正在引起学 者们继逆境耐挫力研究之后新一轮“Q”之系列研究极大的科研亢奋,并极有可能成为21世纪“Q”之系列研究的重新起点。』

AQ是希望和控制的决定因素

人与天斗,其乐无穷;人与地斗,其乐无穷;人与人斗,其乐无穷。

国无敌国外患,国恒亡——孟子

帮助你成长的人是你的敌人

逆境的三种程度:

芙蓉镇:“记住,要像一条狗一样活着”

 敌人帮助成长

 危机提高警觉

 困境激励思维

工作压力排名

1、 矿工

2、 警察

3、 飞行员

4、 牙医

5、 演员

6、 医生

最后一名:图书管理员

不需要告诉别人你的压力,要学会自己化解压力

人类10大压力:

1、 配偶死亡100

2、 离婚 73

3、 亲人分离 65

4、 入牢 63

5、 家有重要亲人死亡 63

6、 自己伤、生病 53

7、 结婚 50

8、 被革职 47

9、 与原配离婚后再结婚 45

10、退休 45

痛苦指数

用刀割手:9分

女人生小孩:9.7分

压力缓解方法:

1、 watch everything,亲于观察部属是否有异常行为,然后采取适当措施(比如心理辅导)

2、 建立“无事不谈”的良好沟通渠道,让部属的的心声有倾诉的对象

3、 让每个人都知道你对他们在工作上有何期望

4、 只要情况许可,就多多让部属参与你的决策工作

5、 不要把部属累垮,但是也不要让部门内出现闷的发慌的“闲人”

6、 鼓励部属到公司外面用午茶,呼吸新鲜空气

为老师鼓掌,直到他听不见为止

再补充一位网友的笔记.

讲座1

1.不要总讲:“我以为。”(13:57 — 23:25)

不要为自己做各种辩解。美国前总统杜鲁门说过:“Pass the pot here!”(问题到此为止)。不要把麻烦丢给别人。敢于承担责任是建立自信心的基础……

2.“世界强国越是守时的越是强大!”(39:00 — 43:55)

在德国收到一个“12:03”的宴会请帖……

讲座2

3.“他们、你们和我们” (00:48 — 07:26)

在提到其他部门时,不要说“他们。”以免在单位内部形成对立……

4.“要看目标,不要只看问题。” (38:35 — 46:29)

一个禪师养了条狗取名“放下”……

讲座3

5.“一生只做一件事。” (13:00 — 17:03)

因为发生第一次世界大战不能进口到公司一直使用的德国染料,日本有家做染布公司的董事长,为了保证染布的品质刀砍布匹,防止有人用本国的染料染布……

6.“用人以能。” (28:55 — 33:10)

中日甲午战争中的北洋舰队统帅丁汝昌是个海战的外行……

讲座4

7.“‘IBM’犯过的最大的错误”(17:06 — 26:49)

做重要和紧急的事情。你在洗澡这时候门铃响了,急急忙忙披着浴巾开门结果是来人敲错了门,这就是件“紧急但不重要的事情”……

8.自动报告你的工作进度(32:17 — 36:51)

让上司知道你的工作进度,这对你的成长很重要……

9.充实自己,努力学习,才能了解上司的语言(39:08 — 43:18)

在飞机上,欧美人很少讲话,都在看书,大家都在努力学习……

讲座5

10.不忙的时候主动帮助别人(00:00 — 02:09)

去看看南京的“麦当劳”顾客排队的时候……

11.争吵与服从(17:52 — 20:38)

开会讨论的时候可以争吵,但开完会就只有一个声音……

12.可口可乐与百事可乐的区别(29:13 — 31:55)

硬件的差异很小,重要的是拼人才、拼软件……

13.锁住老客户发展新客户(35:22 — 42:21)

做生意不能见一个宰一个,宰到最后宰光了……

讲座6

14.大家都要设法缩减成本(01:57 — 10:13)

“日航”压缩成本的办法……

15.“IBM”的奖金(48:33 — 51:20)

要有奖金就通通有,要没有就通通没有……

讲座7

16.“IBM”的规矩(03:00 — 05:45)

“我不管他是谁,认牌不认人。”……

17.逐步迈向团队领导(11:39 — 16:26)

“我们总经理死了。”……

18.“我要知道的是原理,不是数据。”(24:45 — 27:52)

有记者问:“爱因斯坦先生,声音的速度有多快?” 爱因斯坦答道:“这个数字我不敢确定,我要去查查字典。”……

19.SONY的工人与随身听(29:42 — 31:00)

SONY的一个工人为方便听收音机想出了随身听的发明……

20.盲目的群众(48:52 — 50:28)

“打起仗来谁第一批去?”……

讲座8

21.今天你做妈妈(13:06 — 18:00)

阿乖,明天早上你做妈妈……

22.IQ与EQ(21:24 — 26:54)

“把他带回去,这孩子没有什么希望。”小学老师对爱因斯坦的母亲说。“这孩子念什么都可以,千万不要让他念数学。”……

23.高IQ与低EQ(40:49 — 47:11)

不能适应环境、不能委曲求全、不能顾全大局、不能领导群众……

讲座9

24.伟人理论(35:09 — 43:09)

一个成功的人应该具备的条件:智力;积极、主动;监督力;自信;果敢。

25.命、运、积德、风水、读书(47:20 — 50:28)

中国命相学的名言:一命、二运、三积德、四风水、五读书。

讲座10

26.预测成功的世界性指标(1:06 — 8:38)

台湾有个登山爱好者叫高明禾(音)爬西玛拉雅山冻伤,四个手指和四个脚趾只好割掉,但他……

27.象狗一样地活下去(26:20 — 30:12)

孟子讲的好,没有敌国外患,这个国家会衰败的,没有竞争和逆境这个人是没办法有斗志的……

讲座11

28.学会肯定他人(35:30 — 39:26)

人家有了成绩要肯定他(她)。

29.让部属参与你的决策(40:00 — 43:52)

情况许可要让部属参与你的决策,你一直要认为他们也是优秀的。

做事必须要掌握的原则

Posted by 机器人 on 22nd 八月 2007 in mylife

摘自:余世维讲座

做任何事都要讲效果,不要做没有效果的事、不要写没有效果的文章、不要开没有效果的会。

(一晚上都想着这句话,讲的太有对了,所以一大早就把它给记了下来)

又新的一天。

机器人 2007-8-22 08:21 于 北京

迎来的第一个双休日

Posted by 机器人 on 18th 八月 2007 in mylife

经过了这个礼拜,终于体会到了上帝为什么会将第七日安排为安息日,原来,上帝他老人家也累了,何况人呢?

其实这个礼拜对我来讲,应该也算是比较有挑战的一个礼拜吧,因为在对公司的所有流程不了解或者说是对我的本职工作不了解的情况下,居然接手了项目,在这个礼拜里,不但要学习这一整套工作流程,而且项目的工期丝毫不能延误,也算是对自己的一个挑战吧。

说实话,在现在这家公司里,总得来讲,人都挺好的,但任务可能会多了一点,自己或许也会累一点,但又想,这么年轻,不受点累,不吃点苦,那得了,现在不多吃点,那以后怎么办。

总感觉到,刚开始起点还是低一点好,只要前面的路走的比较低,只要自己一步一步的坚持走下去,后面的道路一定会很顺利的。

或者别人会说这只是自己安慰自己的一句话罢了,不过不管怎么说,只要自己能理解,能去接受它,这就是最大的成功。、

机器人 2007年8月19日 于 北京

 

批处理文件bat 语法备忘

Posted by 机器人 on 13th 八月 2007 in 未分类

载自:http://tristones.viaspeip.com/archives/001130.html

批处理文件bat 语法备忘

需要用到的脚本语言还真是多,从系统管理、数据管理、程序开发。脚本语言的影子真是无处不在,孱弱的windows上的可怜的bat也是不得不时常备忘得东东。现在渐渐习惯了把一些零碎的需要整理的文档放在writely上面,即方便自己移动处理文档,还可以跟他们协作或者讨论之用。而且能支持word文档的直接导入,之前用的时候稳定性不很理想,有发生过几次文件不能保存或者保存了无效的问题,发信给他们管理员,倒是很快得到了答复和解决。最近用的时候才发现出现了下列的文字。Writely is now part of Google!

看来有钱就是好啊,想买啥就买啥。估计用不了多久,google也会变成跟ms一样被骂得对象了。没办法,有钱的,横看竖看都是一副欠扁的样。好了,切入正题,把google借来的文章先放着自己备用! :)

 

扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件。

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

.bat是dos下的批处理文件

.cmd是nt内核命令行环境的另一种批处理文件

从 更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由 专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。所以从某个程度分析,batch, unix shell, awk, basic, perl 等脚本语言都是一样的,只不过应用的范围和解释的平台各有不同而已。甚至有些应用程序仍然沿用批处理这一称呼,而其内容和扩展名与dos的批处理却又完全 不同。

===================================

首先批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。

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

批 处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普通数据性文件,这缘于windows系统这个新型解释平台的涉入,使得批处理的应 用越来越"边缘化"。所以我们讨论的批处理应该限定在dos环境或者命令行环境中,否则很多观念和设定都需要做比较大的变动。

========================

其 次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来 循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分有限的,也是十分不规范的。批处理的程序语句就是一条条的DOS命令(包括 内部命令和外部命令),而批处理的能力主要取决于你所使用的命令。

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

批 处理文件(batch file)也可以称之为批处理程序(batch program),这一点与编译型语言有所不同,就c语言来说,扩展名为c或者cpp的文件可以称之为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 解释分析,根据其内容按优先级顺序调用第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环境中,不仅增加支持了 DOSSTART.BAT, WINSTART.BAT 等许多其它自动运行的批处理文件,对AUTOEXEC.BAT 也增加了 .DOS .W40 .BAK .OLD .PWS 等许多变体以适应复杂的环境和多变的需求。

==== willsort 编注 =============

以 下关于命令的分类,有很多值得推敲的地方。常用命令中的@本不是命令,而dir、copy等也很常用的命令却没有列入, 而特殊命令中所有命令对我来说都是常用命令。建议将批处理所引用的命令分为内部命令、外部命令、第三方程序三类。而内部命令和外部命令中别有一类是专用于 或常用于批处理中的命令可称之为"批处理命令"。

以下摘录MS-DOS 6.22 帮助文档中关于"批处理命令"的文字,当然,其中有些概念和定义已经有些落后了。

批处理命令

批处理文件或批处理程序是一个包含若干MS-DOS命令的正文文件,扩展名为.BAT。当在命令提示符下敲入批处理程序的名称时,MS-DOS成组执行此批处理程序中的命令。

任何在命令提示符下可使用的命令都可用在批处理程序中。此外,下面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 可以用于 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

指定要屏蔽的命令或要包含的注解。

=======================

例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 参数, 可以以第一参数为基准返复移动起始指针.

=================

特殊命令

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 也是有效的命令行, 但也只是 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

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为扩展名的文件的内容。

==== willsort 编注 =====================================================

需要指出的是, 当()中的字符串并非单个或多个文件名时, 它将单纯被当作字符串替换, 这个特性再加上()中可以嵌入多个字符串的特性, 很明显 for 可以被看作一种遍历型循环.

当然, 在 nt/2000/xp/2003 系列的命令行环境中, for 被赋予了更多的特性, 使之可以分析命令输出或者文件中的字符串, 也有很多开关被用于扩展了文件替换功能.

========================================================================

批处理示例

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是实参。

==== willsort 编注 =====================================================

DOS没有 "允许传递9个批参数信息" 的限制, 参数的个数只会受到命令行长度和所调用命令处理能力的限制. 但是, 我们在批处理程序中, 在同一时刻只能同时引用10个参数, 因为 DOS只给出了 %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 SETVER成功地完成了任务

1 用户指定了一个无效的命令开关

2 用户指定了一个非法的文件名

3 没有足够的系统内存来运行命令

4 用户指定了一个非法的版本号格式

5 SETVER在版本表中未找到指定的项

6 SETVER未找到SETVER.EXE文件

7 用户指定了一个非法的驱动器

8 用户指定了太多的命令行参数

9 SETVER检测到丢失了命令行参数

10 在读SETVER.EXE文件时,SETVER检测到发生错误

11 SETVER.EXE文件损坏

12 指定的SETVER.EXE文件不支持版本表

13 版本表中没有足够的空间存放新的项

14 在写SETVER.EXE文件时SETVER检测到发生错误

========================================================================

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]

第一天上班小记。。。。

Posted by 机器人 on 13th 八月 2007 in mylife

这几天一直都没有上网,本来想写点什么的,一直没有时间,昨天搬家,忙了一整天,都是为了自己今天上班能方便点,为了啥。。。

生活啊。。。

每一天上班。。。希望能很快融入到角色中去,,加油。。

先打个记号。。。

由于现在公司还没有分配电脑,暂时用了一下公共电脑。

呵呵。

机器人 2007-8-13 于 北京