作者归档:realwall

Sharp插件

一、关于Sharp
Sharp是用于代理请求的Fiddler插件。
之前代理请求时多使用willow插件,willow的强大之处我就不在此赘述,用过的人都知道。虽然willow很好用,但是仍有痛点,尤其是在代理请求时,像我这种有强迫加懒惰症的人,每次都要选择路径,给文件起名,保存文件到本地,然后设置代理时还要再查找一次文件路径,不够快捷。为了解决文件命名、选择文件保存路径、读取路径的痛点,本插件诞生了~

二、Sharp特性
1、根据设置匹配url路径。
2、直接编辑响应内容,无需在本地保存文件。
3、支持将左侧会话列表拖动到Sharp插件中,并根据会话内容自动填充表单,新建代理配置。
4、匹配POST参数,当请求的url相同而post参数不同时,可通过设置匹配post参数过滤请求。
5、设置别名,可以设置一个方便记忆的名字显示在列表中,方便查找。

三、Sharp插件下载和安装
下载地址:http://realwall.cn/download/sharp_1.1.6.zip
将文件下载的压缩包解压,将Sharp.dll和文件夹Sharp复制到 Fiddler安装目录/Scripts/ 中(注意复制时要关闭Fiddler),启动Fiddler即可在插件栏看到Sharp的选项卡。

四、使用方法
1、打开Fiddler,切换到Sharp选项卡。
2、在浏览器中发起请求,使请求会话出现在Fiddler左侧会话列表中。
3、将需要代理的会话拖动到Sharp的列表中,即出现设置代理窗口。
4、编辑url匹配规则和响应内容,点击确定,则将代理配置添加到了Sharp中了。
5、再次刷新页面,响应即被替换了

 五、注意事项
1、该插件需Fiddler4以上版本使用,低版本插件将不会显示。如果安装后没有出现对应的选项卡,请升级Fiddler版本。

我的折腾list

之前做的东西,有时间没看都快忘了,整理下,方便以后查找。

1、2048朝代版,还可以手机上玩

http://realwall.cn/ts/2048/canvas.html

2、弹性小球动画,一对好基友欢乐的跳来跳去

http://realwall.cn/ts/ball/ball.html

3、弹性小球动画升级版——推球,这个需要在手机上玩,因为只绑了touch事件,没有处理mouse事件。

http://realwall.cn/ts/ball/pushball/ball.html

4、弹性小球再升级——多终端推球小游戏,这个游戏由于需要与服务器端建立websocket连接,需要我启动服务才行。

http://realwall.cn:3000/

5、雪天跑步的人动画,虽然丑的不忍直视,但是毕竟动起来了~

http://realwall.cn/ts/snow_man/index.html

6、变色画板,在手机上打开,选中某一区域可以看到变色效果

http://realwall.cn/ts/draw/index.html

移动端点击事件触发顺序

移动端页面事件触发顺序和事件触发规则不同于PC端,一般都知道click在移动端会延迟200~300ms触发。
本文从实例出发,演示移动端事件的触发规则和顺序。

HTML页面:

<body>
<script type="text/javascript">
var firstEmitTime = 0;
//页面输出日志
function showLog(msg){
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
}
</script>

<a href="javascript:
    var aa='href: ' + ((new Date()).getTime() - firstEmitTime);
    showLog(aa);console.log(aa);"
    id="aa">This is a href</a>
<script type="text/javascript" src="tmp.js"></script>
</body>

tmp.js文件:

var aa = document.getElementById("aa");
var eventTypeArr = ['click', 'touchstart', 'touchmove', 'touchend', 
        'mousedown', 'mousemove', 'mouseover', 'mouseup'];

for(var i = 0; i < eventTypeArr.length; i++){
    //利用闭包保存eventType,当回调函数触发时会访问该闭包的环境变量对象
    (function(){
        var eventType = eventTypeArr[i];
        aa.addEventListener(eventType, function(){
            var curTime = (new Date()).getTime();
            if(firstEmitTime === 0){
                firstEmitTime = curTime;
            }
            //打印当前事件触发时间与第一个事件触发时间的差值
            var log = eventType + ': ' + (curTime - firstEmitTime);
            console.log(log);
            showLog(log);
        });
    })();
}

iPhone4/iOS7.0.4上如果点击(非长按),则输出结果大多为(事件触发顺序不变,间隔时间略有不同):
touchstart:0
touchend:204
mouseover:243
mousemove:243
果长按链接,经一百多次测试,下面是两种输出结果,约70%是第一种情况(由于受点击时长和力度的影响,此数据仅供参考):
第一种:
touchstart:0
mouseover:2238
mousedown:2239
mouseup:2243
click:2244
href:2245

第二种:
mouseover:0
mousedown:0
mouseup:5
click:5
href:5
其中,href内为JavaScript代码时,浏览器会提示是否打开,需要点击打开,才会输出mouseover及其后面的值,因此与touchstart的间隔可能不是200~300ms。
从结果可以看出该环境下:
1、与click触发时,touchstart未必触发;
2、mouse系列事件与click事件是相近时间内触发,大约在touchstart后延迟200~300ms后触发。

华为MT1-U06/Android4.1.2上点击链接(非长按),测试一百多次,主要有下面三种结果,出现概率分别为70%、25%和5%(由于受点击时长和力度的影响,此数据仅供参考):
第一种:
mouseover:0
mousemove:6
touchstart:12
touchend:568
mousedown:869
mouseup:874
click:876
href:879

第二种:
mouseover:0
mousemove:7
mousedown:387
mouseup:392
click:394
href:396

第三种:
mouseover:0
mousemove:8
touchstart:12
touchmove:91
touchend:95
可以看出该环境下:
1、mouse事件会先于touch事件开始,而迟于其结束。
2、click和href事件触发仍是最后触发,会延迟300ms左右。

页面引入JavaScript脚本

1、直接添加代码块
通过script标签,可直接将JavaScript代码嵌入网页
Example:

<script type="text/javascript">
  document.write("Hello World!")
</script>

2、加载外部脚本

<script charset="utf-8" src="example.js"></script>

直接将script标签写在页面上,浏览器加载时会阻塞页面渲染,知道js加载完成。

异步加载的脚本可以这样引入

<script src="js/require.js" defer async="async"></script>

其中,defer规定是否对脚本执行进行延迟,直到页面加载为止。但只有Internet Explorer支持defer属性。
async属性可以保证脚本下载的同时,浏览器继续渲染。一旦渲染完成,再执行脚本文件,这就是“非同步执行”的意思。需要注意的是,一旦采用这个属性,就无法保证脚本的执行顺序。哪个脚本先下载结束,就先执行那个脚本。IE 10支持async属性,低于这个版本的IE都不支持。如果同时使用async和defer属性,后者不起作用,浏览器行为由async属性决定。

如果 async=”async”:脚本相对于页面的其余部分异步地执行(当页面继续进行解析时,脚本将被执行)
如果不使用 async 且 defer=”defer”:脚本将在页面完成解析时执行
如果既不使用 async 也不使用 defer:在浏览器继续解析页面之前,立即读取并执行脚本

3、动态嵌入脚本
创建script元素,插入页面,可动态嵌入脚本,如下:

var jsfile = ['/js/logic/ee.js', '/js/logic/ff.js'];
for(var i = 0; i < jsfile.length; i++){
    var script = document.createElement('script');
    script.src = jsfile[i];
    script.async = false;
    var src = jsfile[i];
    script.onload = function(){
        console.log('onload ' + this.src);
    }
    document.head.appendChild(script);
}

不管async是不是设置为false,都不会阻塞页面渲染。但设置async为false,可保证按照添加到页面的顺序加载js,设置为true或不设置都不会按顺序加载。
还有就是,js加载下来后会立即执行,然后才会执行onload方法。

参考:
http://javascript.ruanyifeng.com/bom/engine.html

nodejs环境使用jshint

一、概述
jshint是检测JavaScript语法问题的工具,可以根据自己的需要配置检测规则。

二、安装
npm install jshint -g
一般全局安装就可以了,可以在任何目录下使用jshint命令。

三、简单的使用方法
1、检测单个js文件语法
在myfile.js所在的目录运行:
jshint myfile.js
2、检测当前目录及其子目录所有js文件的语法
jshint ./

四、配置文件
有以下三种方法设置jshint配置文件
1、使用 –config 选项指定配置文件
Example:
jshint –config ./aaa ./
表示检测当前目录内所有的js文件,并指定配置文件为当前目录下的aaa文件。
2、使用 .jshintrc 文件,如果在运行jshint是,如果没有–config 选项,则会以当前目录的.jshintrc文件为配置文件,如果当前目录没有这个文件,则以其父目录.jshintrc 文件配置文件,仍没有的话,则继续找其父目录,直至根目录。
3、在nodejs项目的package.json文件的jshintConfig字段中设置配置文件。

五、内嵌配置
除了使用配置文件配置检测规则外,还可以在js文件内,使用特殊的注释,配置检测规则。
Example:
/* jshint undef: true, unused: true */
/* global MY_GLOBAL */
或者
// jshint undef: true, unused: true
这两种注释方式都是可以的,其中global参数告诉JSHint,该变量是全局变量,从其他js引入的。而且这些注释的作用域是函数内,这意味着如果你把这段注释放在某个函数内,则该配置只在该函数内起作用。

六、JSHint的配置选项(转自:http://www.zipeng.info/archives/jshint-intro.html)
asi
如果是真,JSHint会无视没有加分号的行尾,
自动补全分号一直是Javascript很有争议的一个语法特性。默认,JSHint会要求你在每个语句后面加上分号,但是如果你认为自己理解了asi(automatic semicolon insertion),你可以抛弃JSHint对分号的检查。

bitwise
如果为真,JSHint会禁用位运算符
Javascript允许位运算,但是他却没有整型,位运算符要把参与运算的数字从浮点数变为整数,并在运算后再转换回来。这样他们的效率就不如在别的语言中那么高。

boss
很霸气的选项,如果为真,那么JSHint会允许在if,for,while里面编写赋值语句。
一般来说,我们会在循环、判断等语句中加入值的比较来做语句的运行条件,有时候会把==错写成赋值的=,通常,JSHint会把这个认定为一个错误,但是开启这个选项的化,JSHint就不会检查判断条件中的赋值 ,你是boss,你说的算:)。

curly
如果为真,JSHint会要求你在使用if和while等结构语句时加上{}来明确代码块。
Javascript允许在if等结构语句体只有一句的情况下不加括号。不过这样做可能会让你的代码读起来有些晦涩。

debug
如果为真,JSHint会允许代码中出现debugger的语句。不过建议你最好在检测代码前去掉debug的语句。

eqeqeq
如果为真,JSHint会看你在代码中是否都用了===或者是!==,而不是使用==和!=。
我们建议你在比较0,”(空字符),undefined,null,false和true的时候使用===和!===。

eqnull
如果为真,JSHint会允许使用”== null”作比较。
== null 通常用来判断一个变量是undefined或者是null(当时用==,null和undefined都会转化为false)。

evil
如果为真,JSHint会允许使用eval
eval提供了访问Javascript编译器的途径,这有时很有用,但是同时也对你的代码形成了注入攻击的危险,并且会对debug造成一些困难。
记住,Function构造函数也是另一个‘eval’,另外,当传入的参数是字符串的时候,setTimeout和setInterval也会类似于eval。

forin
如果为真,那么,JSHint允许在for in 循环里面不出现hasOwnProperty,
for in循环一般用来遍历一个对象的属性,这其中也包括他继承自原型链的属性,而hasOwnProperty可以来判断一个属性是否是对象本身的属性而不是继承得来的。

immed
如果为真,JSHint要求匿名函数的调用如下:
(function(){
//
}());
而不是
(function(){
//bla bla
})();

laxbreak
如果为真,JSHint则不会检查换行。
Javascript会通过自动补充分号来修正一些错误,因此这个选项可以检查一些潜在的问题。

maxerr
设定错误的阈值,超过这个阈值jshint不再向下检查,提示错误太多。

newcap
如果为真,JSHint会要求每一个构造函数名都要大写字母开头。
构造器是一种使用new运算符来创建对象的一种函数,new操作符会创建新的对象,并建立这个对象自己的this,一个构造函数如果不用new运算符来运行,那么他的this会指向全局对象而导致一些问题的发生。

noarg
如果为真,JSHint会禁止arguments.caller和arguments.callee的使用
arguments对象是一个类数组的对象,它具有一个索引值。arguments.callee指向当前执行的函数(这个在ES5的严格模式中被禁用了),而arguments.caller指向调用当前函数的函数(如果有的话),并且,他并不是在所有的Javascript实现里面都有。

noempty
如果为真,JSHint会禁止出现空的代码块(没有语句的代码块)。
如果为真,JSHint会禁用构造器,以避免一些问题。
在JSLint中会主动禁用构造器的方式以避免一些潜在问题,但其实很多构造器的使用并非有害,例如如下的调用
new JsUIWindow();
//注意这个调用是没有把构造器的结果赋值给变量的
因此,我们需要使用构造器的时候可以禁用这个选项。

nomen
如果为真,JSHint会禁用下划线的变量名。
很多人使用_name的方式来命名他们的变量,以说明这是一个私有变量,但实际上,并不是,下划线只是做了一个标识。
如果要使用私有变量,可以使用闭包来实现。

onevar
如果为真,JSHint期望函数只被var的形式声明一遍。

passfail
如果为真,JSHint会在发现首个错误后停止检查。

plusplus
如果为真,JSHint会禁用自增运算和自减运算
++和–可能会带来一些代码的阅读上的困惑。

regexp
如果为真,JSHint会不允许使用.和[^…]的正则,
因为这样的正则往往会匹配到你不期望的内容,并可能会应用造成一些危害。

undef
如果为真,JSHint会要求所有的非全局变量,在使用前都被声明。
如果你不在一个本地作用域内使用var的方式来声明变量,Javascript会把它放到全局作用域下面。这样会很容易引起错误。

sub
如果为真,JSHint会允许各种形式的下标来访问对象。
通常,JSHint希望你只是用点运算符来读取对象的属性(除非这个属性名是一个保留字),如果你不希望这样可以关闭这个选项。

strict
如果为真,JSHint会要求你使用use strict;语法。
Strict 模式是ES5里面的一个新特性,他允许你把一个程序或者函数放在一个“严格”的作用域中。可见Resig写的一篇关于严格模式的blog
严格模式做了几件事情,
1、他可以捕获一些错误和异常
2、当我们进行一下“不安全”的操作时,他会抛异常,例如访问全局变量。
3、他会禁止你使用一些奇淫技巧,或者不良的代码编写。

white
如果为true,JSHint会依据严格的空白规范检查你的代码。

nodejs使用MySQL

一、搭建环境
nodejs和MySQL的安装就不说了,安装好后,通过npm安装MySQL模块。
在自己nodejs项目的根目录,运行
npm install mysql --save
其中,--save是将mysql模块写入package.json文件的依赖模块配置中,也可以不添加此选项。

二、创建数据库
运行下面的sql语句,可创建一个简单的数据库和user表
创建数据库tsnode

CREATE DATABASE `tsnode`;

创建表user

CREATE TABLE `user` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) DEFAULT NULL COMMENT '账号',
`password` varchar(45) DEFAULT NULL COMMENT '密码',
`userdesc` varchar(145) DEFAULT NULL COMMENT '备注',
`birthday` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '生日',
`logincount` int(11) DEFAULT '0' COMMENT '登录次数',
PRIMARY KEY (`userid`),
UNIQUE KEY `iduser_UNIQUE` (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='table for user manage';

三、项目js文件中引入mysql模块并操纵数据库
1、连接数据库并查询,将返回数据从控制台输出

var mysql = require('mysql');
var connection = mysql.createConnection({
    'host': 'localhost',
    'user': 'root',
    'password': 'passoo',
    'port': '3307',
    'database': 'tsnode'
});

connection.connect();
connection.query('select * from user limit 0,10', function(err, rows, fields){
    if(err) throw err;
    console.log(rows);  // 输出查询结果JSON
    var birthday = rows[0].birthday;
    console.log(birthday.getTime());  // 输出生日
    console.log(fields);  // 输出字段属性
});
connection.end();

2、使用连接池

/**
 * 使用连接池
 */
var mysql = require('mysql');
var pool = mysql.createPool({
    'host': 'localhost',
    'user': 'root',
    'password': 'passoo',
    'port': '3307',
    'database': 'tsnode'
});

pool.getConnection(function(err, connection){
    console.log('1 connected!');
    // 执行SQL语句
    connection.query("INSERT INTO `tsnode`.`user` (`username`, `password`, `userdesc`) VALUES ('realwall', 'passoo', 'This is user desc2')", function(err, result){
        if(err){
            connection.rollback(function(){
                throw err;
            });
        }
        console.log('connection 1 insert');
        console.log(result);
        // 将连接释放到连接池
        connection.release();
        console.log('connection 1 released');
    });
});

pool.getConnection(function(err, connection){
    if(err) throw err;
    console.log('2 connected!');
    // 执行SQL语句
    connection.query('select * from user limit 0,10', function(err, rows){
        console.log('connection 2 query');
        console.log(rows);
        // 将连接释放到连接池
        connection.release();
        console.log('connection 2 released');
    });
});

mysql命令基础

windows启动mysql服务
运行(windows+r)-> net start mysql
windows关闭mysql服务
运行(windows+r)-> net stop mysql
windows下查看mysql服务是否启动
netstat -ano | findstr 3306
Linux下查看mysql服务是否启动
netstat -ano | grep 3306
登录
mysql -h hostname -u username -p
Example:
mysql -h localhost -u root -p
查看所有数据库
show databases;
设置当前数据库
use <数据库名>;
Example:
use testphp;
查看当前使用数据库
select database();
删除数据库
drop database <数据库名>
查看数据库包含的表
show tables;
查看表结构
describe <表名> ; 或 desc <表名>;
Example:
describe person; 或 desc person;
操作数据库
在设置当前数据库后,即可运行sql语句,操纵数据库
退出
exit 或 快捷键Ctrl + d

git基本操作

 

取得项目的仓库
1)在工作目录中初始化新仓库
git init
2)从现有仓库克隆
git clone git://github.com/realwall/realwall.git [重命名]
这里采用的是git协议,也可以是其他,如http(s)
将当前目录下的文件纳入版本控制
git add *.c
git add README
git commit -m ‘initial project version’
检查当前文件状态
文件状态:untracked(未跟踪),unmodified(未修改),modified(已修改),staged(已暂存)
git status
暂存文件
git add README
注:git add是一个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它来跟踪新文件,或者把已跟踪的文件放入暂存区域,还能用于合并时把有冲突的文件标记为已解决状态。
忽略某些文件
在项目任意目录创建文件.gitignore,以忽略某些文件,使它们不会总是出现在未跟踪文件列中。
.gitignore文件示例:
#此为注释,将被git忽略
*.a #忽略左右后缀名为a的文件
!lib.a #lib.a除外
查看已暂存和未暂存的更新
git diff
提交更新
git commit
注:每次提交前,要先用git status命令查看所有修改是否都已暂存
从跟踪列表移除文件
git rm README
移动/重命名文件
git mv file_from file_to
查看当前远程库
git remote [-v]
选项-v显示远程库的地址
添加远程仓库
git remote add [shortname] [url]
注:如果在www.github.com上添加远程仓库,需先在网站上新建一个同名仓库,然后再将本地项目提交到该新建仓库远程地址。
从远程仓库抓取数据
git fetch [remote-name]
推送数据到远程仓库
git push [remote-name] [branch-name]
查看某个远程仓库的详细信息
git remote show [remote-name]
重命名远程仓库
git remote rename [old-remote-name] [new-remote-name]
删除远程仓库
git remote rm [remote-name]

 

npm命令概述

npm (node package manager)是node模块管理工具,类似与Linux下的yum和apt。

常用npm命令(参考:https://npmjs.org/doc/
安装模块
npm install
安装当前目录package.json文件中配置的dependencies模块
安装本地的模块文件
npm install <tarball file>
Example:
npm install ./package.tgz
安装指定URL的模块
npm install <tarball url>
Example:
npm install https://github.com/indexzero/forever/tarball/v0.5.6
安装本地文件系统中指定的目录包含的模块
npm install <folder>
安装并更新package.json中的版本配置
npm install <name> [–save|–save-dev|–save-optional]
其中:
添加–save 参数安装的模块的名字及其版本信息会出现在package.json的dependencies选项中
添加–save-dev 参数安装的模块的名字及其版本信息会出现在package.json的devDependencies选项中
添加–save-optional 参数安装的模块的名字及其版本信息会出现在package.json的optionalDependencies选项中
安装模块的config的tag配置中含有指定tag的版本
npm install <name>@<tag>
Example:
npm install sax@latest
安装模块的指定版本
npm install <name>@<version>
Example:
npm install underscore@1.5.2
安装模块指定版本号范围内的某一个版本
npm install <name>@<version range>
Example:
npm install async@”>=0.2.0 <0.2.9″
–force强制拉取远程资源,即使本地已经安装这个模块
Example:
npm install underscore –force
-g或–global全局安装模块,如果没有这个参数,会安装在当前目录的node_modules子目录下
Example:
npm install -g express
显示npm的bin目录
npm bin
设置npm配置
npm config set <key> <value> [–global]
使用–global参数,设置全局配置
Example:
设置代理
npm config set proxy=http://proxy.tencent.com:8080
设置npm的镜像地址
npm config set registry http://npm.oa.com
获取npm配置
npm config get <key>
Example:
获取npm当前镜像地址
npm config get registory
删除npm配置
npm config delete <key>
Example:
删除代理设置
npm config delete proxy
在编辑器中打开npm配置文件
npm config edit
交互式的创建package.json文件
npm init
创建模块的压缩包
npm pack [<pkg> [<pkg> … ]]
如果没有参数,则npm会打包当前模块目录
发布模块,发布后可通过名称来安装该模块
npm publish <tarball>
npm publish <folder>
其中:
<folder>:包含package.json文件的目录
<tarball>:经过gzip压缩并归档的一个URL或文件路径,该压缩包包含单个目录,且该目录内有package.json文件
删除模块
npm rm <name>
npm r <name>
npm uninstall <name>
npm un <name>
注意:不会删除package.json文件dependencies选项中对应的依赖配置
查找模块
npm search [search terms ..]
npm s [search terms ..]
npm se [search terms ..]
查找匹配查找字符串的模块
更新模块
npm update [-g] [<name> [<name> … ]]
更新指定name列表中的模块。-g参数更新全局安装的模块。
如果没有指定name,且不是在某个模块内,会更新当前目录依赖的所有包都会被更新(包括全局和模块内);如果当前目录在某个模块目录内,会更新该模块依赖的模块,所以不指定name直接运行npm update时,最好在某个模块内运行,以免更新到其他不想更新的模块。
执行脚本
npm start [<name>]
npm stop [<name>]
npm test [<name>] 等
运行package的start脚本,该脚本写在package.json文件scripts的start字段中。
该字段的值可以是当前系统控制台可执行的脚本,也可以是当前系统可执行文件的路径。
如果不传name参数,则执行当前目录下package.json文件中定义的脚本。
package.json文件
模块的配置文件,详见https://npmjs.org/doc/files/package.json.html

Windows命令行常用命令

console

此处列举了Windows命令行中常用的一些命令,如果不熟悉该命令的用法,可以在键入命令后 跟随 /?,如下所示:
copy /?

arp 显示与修改地址解析协议(ARP)使用的IP地址到网卡物理地址之间的转换表
assoc 显示与修改扩展文件关联
attrib 显示与修改文件属性
bcdedit 显示与管理引导配置数据(BCD)库文件
call 以过程的形式调用脚本或脚本标记
cd 显示目录名或切换当前目录
chkdsk 检查磁盘的错误并显示报告
chkntfs 显示卷状态,在计算机启动时设置或排除一些系统自动检测过程中涉及到的卷
choice 创建一个选择列表,通过该列表,用户可以在批处理脚本中选择相应的选项
cipher 显示当前的加密状态,或在NTFS卷上修改文件夹与文件加密
clip 将命令行工具的输出重定向到Windows剪切板,这个文本输出可以被粘贴到其他程序中
cls 清空控制台窗口
cmd 启动Windows命令解释器的一个新实例
cmdkey 创建,显示和删除保存的用户名和密码
color 设置默认的控制台前景和背景颜色
comp 比较两个文件或文件集的内容
compact 显示或改变NTFS分区上文件的压缩
convert 将FAT卷转换为NTFS
copy 复制或合并文件
date 显示或设置日期
defrag 对硬盘驱动器进行碎片整理
del 删除一个或多个文件
dir 显示目录内的文件与子目录列表
diskcomp 比较两个软盘的内容
doskey 编辑命令行,重新调用命令,创建宏
driverquery 显示所有已安装设备驱动程序及其属性列表
echo 显示信息,或将命令回显打开或关上
edit MS-DOS编辑器
endlocal 在批处理文件中终止环境变量的局部化,所做的环境变量的改动不再仅限于批处理文件中
erase 同del,删除一个或多个文件
esentutl 管理可扩展存储引擎(ESE)数据库,包括活动目录域(ADDS)使用的
eventcreate 在事件日志中创建自定义事件
exit 退出命令解释器或当前批处理脚本
expand 取消文件的压缩
fc 比较两个文件并显示差别
find 在文件中搜索文本字符串
findstr 使用正则表达式在文件中搜索字符串
for 对文件集中的每一文件运行指定命令
forfiles 选择一个或多个文件并对每一文件执行命令
format 对软盘或硬盘进行格式化
ftype 显示或修改用在文件扩展名关联中的文件类型
getmac 显示网络适配器信息
goto 跳转到批处理脚本中标号行
gpupdate 强制进行组策略的后台刷新
hostname 打印计算机名
icacls 显示或修改文件的访问控制表(ACL)
if 在批处理脚本程序中进行条件处理
ipconfig 显示TCP/IP配置
label 创建、改变或删除磁盘的卷标
md 创建目录或子目录(同mkdir)
more 输出一次显示在一个屏幕
mountvol 创建、删除或列出卷挂载点
move 将文件从一个目录移动到同一驱动器上的其他目录
nbtstat 显示协议统计和当前使用NBI的TCP/IP连接
net config server 显示或修改server服务的配置
net continue 恢复暂停的服务
net localgroup 显示、创建、修改或删除本地组帐号
net pause 挂起服务
net print 显示或管理打印任务与共享队列
net session 列出或断开回话
net share 显示或管理共享的打印机与目录
net start 列出或启动网络服务
net statistics 显示工作站与服务器统计信息
net stop 终止服务
net time 显示或同步网络时间
net use 显示或管理远程链接
net user 显示、创建、修改或删除本地用户帐号
net view 显示网络资源或计算机
netsh 调用一个单独的命令提示符,用于对本地计算机或远程计算机上的网络服务配置进行管理
netstat 显示网络连接状态
nslookup 显示DNS状态
path 在当前窗口中,显示或设置可执行文件的搜索路径
pathping 对路由进行追踪并提供丢包信息
pause 挂起对脚本的处理,直至有键盘输入
ping 确定是否可以建立网络连接
popd 切换到由pushd保存的目录
print 打印文本文件
prompt 改变Windows命令提示符
pushd 保存当前目录,之后切换到新目录
rd 移除目录
reg add 向注册表添加一个子健或条目
reg copy 将某注册表条目复制到本地或远程系统上的特定健路径
reg delete 从注册表中删除一个子健或条目
reg query 列出某注册表健下的条目与子健名(如果有)
reg restore 将保存的子健与条目写会到注册表
reg save 将指定子健、条目、值的副本保存到某个文件中
regsvr32 注册或取消对DLL的注册
ren 对文件进行重命名
route 管理网络路由表
runas 以特定用户许可权限运行程序
set 显示或修改Windows环境变量,也可以用于在命令中评估数字表达式
setlocal 在批处理文件中开始变量的局部化
shift 移动脚本中可替换的位置
shutdown 关闭或重启计算机
sort 对输入进行排序
start 启动一个新的命令shell窗口,用来运行指定的程序或命令
systeminfo 显示详尽的配置信息
taskkill 根据进程名和进程ID终止运行中的进程
tasklist 根据进程名或进程ID列出所有运行中的进程
time 显示或设置系统时间
timeout 在批处理脚本中设置超时周期或者等待按键
title 为命令提示窗口设置标题
tracert 显示计算机之间的联通路径
type 显示文本文件内容
ver 显示Windows版本
where 显示匹配搜索模式的文件列表
whoami 显示当前用户的登录与安全信息