最近没事的时候,准备研究一下Windows命令行参数的知识,因为每次自己在操作电脑时总是效率太慢,如果能够了解Windows参数的一些知识,绝对能提高效率!
基本外部命令和内部命令
首先是基本的知识,一般Windows命令包含内部命令和外部命令,其中外部命令比较多,外部命令一般在%SystemRoot%\System32
里面,我的电脑%SystemRoot%=C:\Windows
,估计别人的也差不多。还有一个比较常用的路径%UserProfile%=C:\User\Administrator(或者你自己命名的用户,默认是Administrator)
,这个路径代表你现在使用的用户路径。
内部命令比较少,这里可以罗列出来:
命令名 | 描述 |
---|---|
assoc | 显示或者修改当前的文件扩展关联 |
break | 设置调试中断 |
call | 在一个脚本内调用程序或者其他脚本 |
cd(chdir) | 显示当前目录名或者改变当前目录位置 |
cls | 清理命令窗口并清除屏幕缓存区 |
color | 设置命令shell窗口的文本与背景颜色 |
copy | 将文件从一个位置复制到另一个位置,或者将多个文件连接在一起 |
date | 显示或者设置系统时间 |
del(erase) | 删除指定文件、多个文件或目录 |
dir | 显示当前目录或者指定目录中的子目录与文件列表 |
dpath | 允许程序打开指定目录中的数据文件(就像在当前目录中一样) |
echo | 显示命令行的文本字符串,设置命令回显状态(on|off) |
endlocal | 变量局部化结束 |
exit | 退出命令shell |
for | 对一组文件中的每个文件运行指定的命令 |
ftype | 显示当前文件类型或者修改文件类型(文件扩展关联中使用) |
goto | 将命令解释器直接跳转到批处理脚本中某个标记行 |
if | 命令的条件执行 |
md(makedir) | 在当前目录或者指定目录下创建子目录 |
mklink | 为文件或者目录创建符合连接或者硬连接 |
move | 将一个或者多个文件从当前目录或者指定源目录移动到指定的目标目录,也可以用于对目录进行重命名 |
path | 显示或者设置操作系统用于搜索可执行文件与脚本的命令路径 |
pause | 暂停批处理程序,并显示以下消息: 请按任意键继续… |
popd | 弹出由pushd保存的目录,使其成为当前目录 |
pushd | 保存当前目录位置,之后跳转到指定的目录(可选) |
prompt | 为命令提示符设置文本 |
rd(rmdir) | 移除目录(也可以移除其子目录) |
rem | 在批处理脚本或者Config.sys中设置标记 |
ren(rename) | 对一个或者多个文件进行重命名 |
set | 显示当前环境变量,或者为当前命令shell设置临时变量 |
setlocal | 在批处理脚本中标记变量局部化的开始 |
shift | 改变批处理脚本中可替换变量的位置 |
start | 启动一个单独的窗口,以便运行指定的程序或者命令 |
time | 显示或者设置系统时间 |
title | 设置命令shell窗口的标题 |
type | 显示文本文件的内容 |
verify | 在将文件写入磁盘后,指令操作系统对其进行验证 |
vol | 显示磁盘卷标与序列号 |
以上就是内部命令,而外部命令太多了,这里就不再罗列,以后用到的时候慢慢记录。
首先学习的第一个外部命令是setx,这个命令和内部命令set很像,区别是这个命令可以永久的更改用户环境变量,而set是临时改变,比如我想增加一个
C:\script
文件夹到path里面,就可以使用: setx Path "%Path;C:\script"
或者setx Path "C:\script;%Path"
两者的区别是搜索先后顺序不同罢了。
管理文件扩展与文件关联
通过使用文件扩展,在命令行只需要输入命令名就可以执行命令,有两种类型的文件扩展:
- 可执行文件的文件扩展。可执行文件是使用环境变量%PATHEXT%进行设置的,可以输入set pathext
来查看当前设置,一般是PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
,这些文件都不需要在命令行中显示的指定文件扩展名。
- 应用程序的文件扩展。应用程序的文件扩展也就是文件关联。通过文件关联可以把参数传递给可执行文件,从而等价于双击鼠标打开对应文件。系统中的已知扩展都对应有文件关联,通过assoc
查看,比如assoc.exe
即查看后缀为exe文件的文件关联。查询得到.exe=exefile
。然后可以使用ftype
查看映射的文件类型,比如: ftype exefile
得到exefile="%1" %*
,即说明运行exe文件时,Windows会判断第一个值为要运行的命令,其他的则为要运行的参数。
简单脚本编写规则
有了Windows系统命令的基本知识,就可以写一些简单脚本程序了,与C++、java这类程序有点区别,写脚本程序不需要;
来进行断开程序段,在命令读取下面任意字符就终止:
- 断行(比如按下shift+enter键)
- 回车与断行(比如按下enter键)
- 文件尾标志
常见语句和命令:
- cls
清除控制台窗口,充值屏幕缓冲
- rem
在脚本中创建注释
- echo
在命令行中显示消息、关闭或者打开命令回显
- @
以行为单位控制命令的回显方式
- title
设置命令shell窗口的标题栏
- color
设置命令shell窗口使用的文本色与背景色
为脚本添加注释
一般注释信息有:
- [ ] 脚本创建时间和最后修改时间
- [ ] 脚本创建者
- [ ] 脚本创建者联系方式
- [ ] 脚本用途
- [ ] 脚本输出是否保存及其保存位置
例如下面一个简单的脚本程序:
rem ************************ rem Script: SysInfo.bat rem Creation Data: 2016-7-24 rem Last Modified: 2016-7-24 rem Author: XiaoDong Wang rem Email: 347916416@qq.com rem ************************ rem Description: Display system configuration information rem include system name. IP configuration rem and Windows version. rem ************************ rem Files: Stores output in C:\currentSys.txt rem ************************ @echo off hostname > C:\currentSys.txt ver >> C:\currentSys.txt ipconfig -all >> C:\currentSys.txt
- cls
清除控制台窗口,充值屏幕缓冲
- rem
在脚本中创建注释
- echo
在命令行中显示消息、关闭或者打开命令回显
- @
以行为单位控制命令的回显方式
- title
设置命令shell窗口的标题栏
- color
设置命令shell窗口使用的文本色与背景色
这个程序虽然简单,但是注释的方式值得学习!以后一定要严格要求自己这样注释!!主要上面程序的第一行:@
代表后面一句话不显示、echo off
代表关闭下面所有行的回显,非常好用,建议所有脚本第一行都加上这句话,是的脚本运行后不用显示一堆无用信息。
-
1、首先用记事本新建一个文件夹
-
2、然后在记事本里输入ipconfig /release和ipconfig /renew命令
-
3、将文本另存为.bat为后缀的文件
-
4、鼠标右键选中编辑好的脚本文件,选择以管理员方式运行
-
5、这时我们电脑就会自动断开网络然后重新连接网络了:
-
我的CMD输入任何命令都显示 不是内部命令也不是外部命令 也不是可运行的外部程序或批处理文件
兄弟,你电脑的环境变量%path%是不是定义错了?安装少数软件可能会修改path值,建议你重新设置下环境变量。
具体设置方法:右键“我的电脑”→“属性”→“高级”→”环境变量”
找到系统变量副框,继续找到path,双击,将变量值输修改成:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\
然后再去试试你的命令吧~
=======================================
看到你的补充截图,建议你重置一下环境变量:将我给的代码覆盖以前的环境变量设定,当然覆盖前请先备份之前变量路径。
你命令打错了…………
要不就是你的系统PATH变量的设置有问题
你在CMD界面打path命令看一下 有没有类似
PATH=C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\
这样的结果的
如果没有就自己设置一下。