常用的一些cmd命令

创建空文件的几种方式

  • cd .>a.txt
  • copy nul b.txt
  • type nul>c.txt
  • echo a 2>d.txt
  • fsutil file createnew e.txt 0
  • 其他, 无输出, 且重定向文件即可

文件,文件夹相关命令

  • dir 显示目录和文件
  • cd 进入目录
  • attrib 显示和更改文件属性

    • /d 必须和 /s一起使用
    • attrib h d:\123 /s /d”和”attrib h d:\123. /s /d
    • 前一个只有d:\123以及他同名的子目录设置了隐藏;
    • 后一个将所有文件和子目录设置了隐藏, 但是d:\123本身没有隐藏
  • del 删除文件

  • copy 复制文件, 而不能复制文件夹

    • 合并文件: copy /b 文件1+文件2+文件3 合并后的文件
    • copy /b(二进制)[/a(文本)] d:\1.mp3 d::\2.mp3 e:\3.mp3 -> 1.mp3和2.mp3合并为3.mp3
  • xcopy 复制文件夹

    • /s 复制非空的目录和子目录, 如果省略,只在一个目录中工作
    • /e 复制所有子目录, 包括空目录
    • /h 复制具有隐藏和系统文件属性的文件
    • /t 只复制子目录结构, 不复制文件, 要复制空目录, 加/e
    • /y 禁止提示确认要覆盖现存的目标文件
    • 区别: xcopy /e d:\123 e:\kkk\ 和 xcopy /e d:\123 e:\kkk
    • 俩个都是复制123目录下的所有文件(夹)到kkk, 但是前者不会询问你目标e:\kkk是目录名还是文件名
  • md 创建文件夹, 创建单个文件夹

    • 对于文件名有空格的情况, 用双引号,如: md “c:\Documents and setting\123”
    • 创建多个目录, 如: md abc d:\game\123 abd
  • rd 删除空目录(目录中不能有子目录和文件)

    • /s 除目录本身外, 还将删除指定目录下的所有子目录和文件,用于删除目录树
    • /q 安静模式, 带/s删除目录树是不要求确认
  • ren 重命名文件夹

    • ren [path]filename1 filenam2 -> filenam2不能带路径
  • move 移动文件夹, 重命名文件夹

    • /y 取消确认改写一个现有目标文件的提示
    • /-y 对确认改写一个现有目标文件发出提示
    • move 命令可以跨区移动文件, 却不可以跨分区移动文件夹
    • 对于跨区移动文件, 如果目标位置存在和将要移动的文件同名是, 系统会提示: “文件存在”, 命令不会执行
    • 对于隐藏或系统属性的文件, 只有去除他们的属性后, move才能执行

字符串查找

  • find 字符串查找

    • find “echo” dir.bat
  • findstr 字符串查找增强

    • 支持正则

常用网络命令

  • ping 测试ip连接

    • -n count 发送数据包个数
    • -w timeout 超时间隔,毫秒
    • ping 1 -n 1 -w 10000 2>nul 1>nul : 批处理中可以用于延时10秒
  • ipconfig 查看ip配置

  • arp 显示和修改”地址解析协议(arp)”缓存中的项目

    • -a or -g : 显示所有项目
    • -s : 手工输入一个静态项目
    • -d : 使用本命令能够人工删除一个静态项目
  • start 开启命令

    • start “title” filename
    • start www.baidu.com : 打开百度
    • start “” “%windir%\system32\NOTEPAD.EXE” “%userprofile%\桌面\abc.txt”
    • start “” “%userprofile%\桌面\abc.doc”
    • /min 和 /max 窗口的最大化和最小化
  • shutdown 关闭和重启计算机

    • shutdown -l :该命令只能注销本机用户,对远程计算机不适用。
    • at 12:00 shutdown -s :通过-s参数,在12:00执行关闭计算机。
    • shutdown -r -t 60 :60秒后重启计算机。这里是设置重启倒计时为60秒。如果没有设置时间则默认为30秒。
    • shutdown -f -s -t 300 :通过-f参数强制计算机300秒后关闭。
    • shutdown -a :放弃系统关机
  • taskkill 关闭指定进程

  • tasklist 显示本地或远程机器上的当前运行的进程列表

常用特殊符号

重定向

  • > 传递且覆盖
  • >> 将结果追加到指定的设备

命令管道符 |

  • 它之前的命令或语句的执行结果作为在它之后的命令或语句的处理对象
  • 例1: tasklist | find /i “qq.exe” && taskkill /f /im qq.exe
  • 例2: echo Y | rd /s c:\abc

组合命令 & && ||

  • & : 按顺序执行多条命令, 互不影响
  • && : 只有前一个命令没有错, 才执行下一个
  • || : 前一个命令执行失败后, 才执行下一个, 否则不执行下一个
  • ^ : 转义字符
1
2
3
4
5
6
7
8
9
10
11
1, 在cmd环境中,有些字符具备特殊功能,如 >、>>表示重定向,| 表示管道,&、&&、|| 表示语句连接……它
们都有特定的功能,如果需要把它们作为字符输出的话,echo >、echo | ……之类的写法就会出错——cmd解释器会
把它们作为具有特殊功能的字符对待,而不会作为普通字符处理,这个时候,就需要对这些特殊字符做转义处理,
在每个特殊字符前加上转义字符, 因此,要输出这些特殊字符,就需要用 echo ^>、echo ^|、echo ^|^|、echo ^^……
之类的格式来处理;
2, 此转义字符还可以用作续行符号;
3, @echo off
echo 这是^
一个^
句子
Pause

变量引导符

  • 当百分号成对出现,并且其间包含非特殊字符时,一般做变量引用处理,比如:%var%、%str%;
  • 百分号作为变量引用还有一种特殊形式,那就是对形式参数的引用,此时,单个百分号后面紧跟0~9这10
    个数字,如%0、%1、%2
  • %0 表示批处理文件本身,包括完整的路径和扩展名
  • %1至%9 表示第一个参数至第九个参数
  • 出现在 set /a 语句中时,表示两数相除取余数,也就是所谓的模运算,它在命令行窗口和批处理文件中的写法
  • 略有差异:在命令行窗口中,只需要单个的%,在批处理文件中,需要连续两个百分号,写成%%
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
set /a num=4%%2
echo 4除以2的余数为 %num%

:: 处理当前批处理常用的
%~0: 取文件名(名+扩展名)
%~f0:取全路径
%~d0:取驱动器名
%~p0:只取路径(不包驱动器)
%~n0:只取文件名
%~x0:只取文件扩展名
%~s0:取缩写全路径名
%~a0:取文件属性
%~t0:取文件创建时间
%~z0:取文件大小
pause
  • 转义符号:如果要显示%本身时,需要在前面用%来转义
1
2
3
4
5
@echo off
echo 一个百分号:%%
echo 两个百分号:%%%%
echo 三个百分号:%%%%%%
pause

界定符 “”

  • 在表示带有空格或特殊符号的路径时常要用" "来将路径括起来
  • 表示其中的内容是一个完整的字符串
1
2
3
4
5
6
7
8
9
cd /d cd "d:\program files\^%*abc"
@echo off
set "var=abc 123"
echo %var%
pause

c:\>cd “Program Files”
c:\>cd progra~1
c:\>cd pro*