window 命令bat语法
基础语法
命令帮助语法
命令 /?
1、@
行首有了它的话,这一行的命令就不显示了。
@字符放在命令前将关闭该命令回显,无论此时echo是否为打开状态
2、echo
输出的意思
3、on | off 开关的意思
(1)echo off
只显示执行结果
(2)echo on (默认)
显示执行命令(除echo)和执行结果
>
输出重定向,创建或清空文件,然后把数据输出到文件,类似linux shell的标准输出
>>
把数据追加到文件,类似linux shell的标准输出
4、注释,::
或 rem
5、跳转到标签,":"和 goto
6、定义一个标签,:
7 、pause 运行命令时不关闭窗口
8、Call 命令
从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用
语法
call [Drive:][Path] FileName [BatchParameters] [:label [arguments]
参数
[Drive:}[Path] FileName
指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。
9、start,调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用
打开D盘
start explorer d:\
10、choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……
11、 %x 参数
%1 -- 第1个参数
%2 -- 第2个参数
%3 -- 第3个参数
11、errorlevel程序返回码
echo %errorlevel%
每个命令运行结束,可以用这个命令行格式查看返回码
用于判断刚才的命令是否执行成功
默认值为0,一般命令执行出错会设 errorlevel 为1
12、title设置cmd窗口的标题
13、find在文件中搜索字符串。
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
/V 显示所有未包含指定字符串的行。
/C 仅显示包含字符串的行数。
/N 显示行号。
/I 搜索字符串时忽略大小写。
/OFF[LINE] 不要跳过具有脱机属性集的文件。
"string" 指定要搜索的文字串,
[drive:][path]filename
指定要搜索的文件。
如果没有指定路径,FIND 将搜索键入的或者由另一命令产生的文字。
Find常和type命令结合使用
Type [drive:][path]filename | find "string" [>tmpfile] #挑选包含string的行
Type [drive:][path]filename | find /v "string" #剔除文件中包含string的行
Type [drive:][path]filename | find /c #显示文件行数
以上用法将去除find命令自带的提示语(文件名提示)
14、pushd 和 popd切换当前目录
@echo off
c: & cd\ & md mp3 #在 C:\ 建立 mp3 文件夹
md d:\mp4 #在 D:\ 建立 mp4 文件夹
cd /d d:\mp4 #更改当前目录为 d:\mp4
pushd c:\mp3 #保存当前目录,并切换当前目录为 c:\mp3
popd #恢复当前目录为刚才保存的 d:\mp4
其他看这个文章
https://www.cnblogs.com/iTlijun/p/6137027.html
1.常用命令举例
a.创建文件夹: md D:\mybat //将在D盘下创建一个名为 mybat的文件夹
b.删除文件夹: rd D:\mybat //将删除D盘中的mybat文件夹删除
c.删除文件夹中的文件: del D:\mybat\sheepmu.txt //删除文件sheepmu.txt
del D:\mybat\sheepmu.txt /q //安静模式删除,即删除时不弹出是否删除的提示框
d.复制文件 : xcopy D:\mybat\sheepmu.txt D:\mybat1 //若D中无mybat1这个文件夹则会创建文件夹再复制
e.向文件中写入内容: echo sheepmu >> D:\mybat\sheepmu.txt //如果这个文件不存在就创建文件并输入。如果是文件 夹不存在就不会成功! >>与>的区别是>是覆盖掉原来 的;>>是直接输入到原来的尾部
f.显示文件中内容: type D:\mybat\sheepmu.txt
g.更改文件名后缀: ren D:\mybat*.txt *.html
2.批处理小例子
a.检查是否中冰河
@echo off
netstat -a -n > D:\mybat\sheepmu.txt
type D:\mybat\sheepmu.txt | find "7626" && echo 遭了,中了!
pause & exit
解析:
第一行:echo off 表示关闭显示,@表示不显示 echo off本身
第二行:netstat 显示协议及当前tcp/ip连接, -a表示显示所有连接和侦听端口;-n表示以数字的形式显示地址和;并把这些信息写入到文件D:\mybat\sheepmu.txt中。
第三行: type 表示显示文件D:\mybat\sheepmu.txt中内容;
| 表示把|前面的输出到|后面的;
&& 表示如果前面成功才执行后面的;
第四行: & 表示且,即暂停且退出。
b.清理系统垃圾
@echo off
if exist C:\windows\temp*.* del C:\windows\temp*.*
if exist C:\windows\History*.* del C:\windows\History*.*
if exist C:\windows\recent*.* del C:\windows\recent*.*
exist
解析:如果存在该文件就删除该文件。注意:删除文件夹用 rd ;删除文件用 del
3.注意事项
a.批处理脚本编写时最好的老师就是小黑老师啦,打开命令行窗口,输入命令加上/?就会有详细的说明,比如: netstat /?
b.pause 命令可以方便我们查看命令执行到了那一步,因为在bat脚本运行时若出现脚本错误窗口会一闪而过。
c.批处理执行过程中可以按 Ctrl+C退出,这对于出现死循环时非常有用。
gulp bat安装
@echo off
cd /d %~dp0
echo "淘宝镜像,加快速度"
call npm install -g cnpm --registry=https://registry.npm.taobao.org
echo "安装全局gulp"
call cnpm install -g gulp
echo "创建文件package.json"
echo ^{"name": "gulp", "version": "1.0.0", "description": "", "main": "index.js", "scripts": {"test": "echo \"Error: no test specified\" && exit 1"}, "keywords": [], "author": "", "license": "ISC", "devDependencies": {"accord": "^0.30.0", "ansi-cyan": "^0.1.1", "ansi-red": "^0.1.1", "cnpm": "^6.0.0", "core-util-is": "^1.0.2", "gulp": "^3.0.0", "gulp-clean": "^0.4.0", "gulp-clean-css": "^4.0.0", "gulp-concat": "^2.6.1", "gulp-less": "^3.0.1", "gulp-rename": "^1.4.0", "gulp-sass": "^4.0.2", "gulp-sourcemaps": "^2.6.5", "gulp-uglify": "^3.0.2", "install": "^0.12.2", "less": "^3.9.0", "pump": "^3.0.0", "rename": "^1.0.4"} }^ > package.json
echo '执行更新安装操作'
call cnpm install
::目前没搞定如何原样的写入文件
echo "监听脚本";
echo '@echo '>watch.bat
echo 'gulp watch '>>watch.bat
echo ' @pause'>>watch.bat
echo '完成本次操作'
@pause