dos命令及批处理 tcy

 

本人最近在做一个项目,要用到批处理,汇总网上各位前辈。为便于今后使用特汇总如下。所有实例本人均经过windows10测试。建议你用notepad++运行。python的可在pycharm中测试,附代码。批处理详细的请参考下面的网站,写的非常详细,推荐参阅。主要内容有dos命令,dos界面的设置,dos批处理,python运行批处理代码。

1.dos 命令    

序号类别命令说明
1文件/夹dir显示当前目录中的文件和子目录
2 dir /a显示当前目录中的文件和子目录(含隐藏,系统文件)
3 dir c: /a:d显示 C 盘当前目录中的目录
4 dir c: /a:-d显示 C 盘根目录中的文件
5 dir c: /b/p/b只显示文件名,/p分页显示
6 dir *.exe /s显示当前目录和子目录里所有的.exe文件
7文件/夹path 为可执行文件显示或设置一个搜索路径
8文件/夹xcopy 复制文件和目录树(/i无文件夹创建,有会有询问)
9 xcopy d:mp3 e:mp3 /s/e/i/y复制 d:mp3 文件夹、所有子文件夹和文件到 e: 覆盖已有文件
11文件/夹deltree删除文件夹和它下面的所有子文件夹还有文件
12文件/夹ICACLS显示、修改、备份或还原文件和目录的 ACL
13文件夹CHDIR显示当前目录的名称或将其更改。
14文件夹cd显示当前目录
15 C:\Users>cd Administrator进入目录
16 cd /d 退回到根目录
17 cd..退回到上一级目录
18 cd /d d:user同时更改盘符和目录
19文件夹tree d:显示D盘的文件目录结构
20文件夹md d:user(mkdir d:user)创建文件夹:如d:user不存在创建目录
21文件夹rd abc删除当前目录里的abc子目录,要求为空目录
22 rd /s/q d:temp删除d:temp文件夹及其子文件夹和文件(/q安静模式)
23文件type c:boot.ini显示文本文件的内容(有可能乱码)
24 type *.txt显示当前目录里所有.txt文件的内容
25文件copy c:a.txt d:b.txt复制c:a.txt到d:并重命名为b.txt
26 copy con a.txt屏幕输入存a.txt(Ctrl+Z结束输入)con屏幕prn打印机nul空设备
27 copy 1.txt + 2.txt 3.txt合并1.txt+2.txt=3.txt文件;如无3.txt保存到1.txt
28 copy test.txt +复制文件到自己,实际上是修改了文件日期
29文件del d:test.txt删除指定文件(非隐藏、系统、只读文件;不能删除文件夹)
30 del *.*:删除当前文件夹下所有文件
31 del /q/a/f d:temp*.*删除d:temp文件夹里面所有文件(含隐藏,只读,系统文件,不含子目录)
32 del /q/a/f/s d:temp*.*删除d:temp及子文件夹里面所有文件(含隐藏,只读,系统文件,不含子目录)
33 ERASE删除一个或多个文件。
34文件move 路径/文件名移动文件并重命名文件和目录
35文件ren d:temp tmp文件更名(支持对文件夹的重命名)
36文件replace替换文件
37文件attrib 显示或更改文件属性。
38文件find 在一个或多个文件中搜索一个文本字符串。
39 find  /i "abc" c:a.txt(/i忽略大小写)在 c:a.txt 里查找含 abc的行;找不到返回码为1
40 find /c "abc" c:test.txt显示含 abc 的行的行数
41 FINDSTR在多个文件中搜索字符串findstr "2005" temp.txt
42文件CACLS显示或修改文件的访问控制列表(ACL)。
43文件FC比较两个文件或两个文件集并显示它们之间的不同
44   
45网络arp 显示、修改局域网的IP地址-物理地址映射列表(当前的arp缓存)
46  =a 显示arp缓存
47  =d 删除一条缓存纪录
48  =s 添加一条缓存纪录
49网络ftp 文件传输;不用装cuteftp
50网络ipconfig显示当前机器的网络接口状态-显示、修改TCP/IP设置
51 ipconfig /all显示详细信息
52 /release 释放当前ip
53 /renew 重新申请ip
54 /flushdns 刷新dns缓存
55 /registerdns 重新栽dns服务器上注册自己
56网络ping 主机ip或名字进行网络连接测试、名称解析(网络不通查看防火墙)
57网络msg 给用户发送消息
58网络net 网络命令集及用户管理
59 net /?获取具体帮助信息
60 net view \\主机 查看共享
61 net start/stop 服务名 来启动和停止服务
62网络netstat -n查看主机当前tcp/ip连接状态,如ip.port状态
63 netstat 主机 
64 netstat -ano|find "64364"端口
65网络nslookup排除dns错误的利器。是一个交互的工具。
66网络telnet 字符方式远程登陆
67网络tracert 主机查看从你自己到目标逐机到底经过了那些路径
68 tracert www.baidu.com 会看到经过的一个个路由节点,
69 pathping 主机类似tracert,可显示一些tracert不能显示出来的信息
70系统at 安排在特定日期和时间运行命令和程序
71系统CLS清除屏幕。
72系统COLOR设置默认控制台前景和背景颜色。
73系统EXIT退出 CMD.EXE 程序(命令解释程序)。
74系统FORMAT 盘符:格式化一分区(dos下用fat文件系统格式化windows ntfs)
75系统HELP 命令名可查看该命令的帮助信息;如find /?
76系统LABEL显示卷标,同时提示输入新卷标
77 LABEL c:system设置C盘的卷标为 system
78系统MORE c:test.txt逐屏显示 c:test.txt 的文件内容
79系统PAUSE 
80系统powercfg控制系统上的电源设置
81系统reg 注册表控制台工具
82系统sc 系统服务设置与控制
83系统shutdown立即或定时关机或重启
84系统smartdrv.exe加载磁盘缓存,参数是缓存的大小,单位是kb
85系统tskill 结束进程
86 taskkill结束进程(比tskill高级)
87 tasklist显示进程列表(Windows XP Home Edition中没有)
88系统VER显示系统版本
89系统VOL显示卷标
90日期DATE显示当前日期,并提示输入新日期,按"回车"略过输入
91日期DATE/t只显示当前日期,不提示输入新日期
92时间TIME显示当前时间,并提示输入新时间,按"回车"略过输入
93时间TIME/t只显示当前时间,不提示输入新时间
94其他DISKPART显示或配置磁盘分区属性。
95 DOSKEY编辑命令行、调用 Windows 命令并创建宏。
96 DRIVERQUERY显示当前设备驱动程序状态和属性。
97 ENDLOCAL结束批文件中环境更改的本地化。
98 FSUTIL显示或配置文件系统的属性。
99 FTYPE显示或修改用在文件扩展名关联的文件类型。
100 GPRESULT显示机器或用户的组策略信息。
101 COMP比较两个或两套文件的内容。
102 COMPACT显示或更改 NTFS 分区上文件的压缩。
103 CONVERT将 FAT 卷转换成 NTFS。您不能转换当前驱动器。
104 CHCP显示或设置活动代码页数。
105 ASSOC显示或修改文件扩展名关联。
106 BREAK设置或清除扩展式 CTRL+C 检查。
107 BCDEDIT设置启动数据库中的属性以控制启动加载。
108 CHKDSK检查磁盘并显示状态报告。
109 CHKNTFS显示或修改启动时间磁盘检查。
110 SUBST映射磁盘--显示目前所有的映时 subst z: serverd输入z:就可访问serverd
112 subst z: /d 取消该映射

 

2.1C:\Users\Administrator>help

    有关某个命令的详细信息,请键入 HELP 命令名

2.3.win7下dos命令窗口常用属性

1.1.进入
    # 首先按下"win+R"打开运行窗口,然后输入“cmd”回车打开命令窗口。
    # dos命令窗口复制,粘贴
1.2.设置
    # 将鼠标放在dos命令窗口的上面,右击选择“属性=>选项=>勾选‘编辑选项’中的
    #‘快速编辑模式’和‘插入模式’”点击“确定”后就可以快速输入了;

2.1粘贴
    # 将需要复制到命令窗口中的内容复制好,然后回到dos命令窗口中在光标闪烁的位置点击
    #‘鼠标右键’,就可以看到内容内容复制到这里了。
2.2复制
    # 将需要复制的内容选中好,然后再按下“回车”键,那要复制的内容就复制在剪切板中,
    # 在需要的地方用'Ctrl+V'就行了。


# 3.设置字体的大小、布局(屏幕缓冲区的大小、窗口大小、窗口位置)和背景颜色;
    # 1、右击选择“属性=>字体”中可以根据需要自由选择字体的大小粗细;
    # 2、右击选择“属性=>布局”中可以根据需要自由选择缓冲区的大小、窗口大小、窗口
         # 打开时出现在屏幕中的位置;
    # 3、dos命令窗口中默认是白色的字和黑色的背景,若是需要设置的话,可以右击选择
         # “属性=>颜色”中可以根据需要自由选择字体以及背景的颜色。

    # 1、上面中设置字体的颜色也可以通过命令“color 数字”来实现;
    # 2、dos命令窗口中默认的title是“管理员:C:\Windows\system32\cmd.exe”,若不想要
         # 也可以改,通过命令“title 标题名”(只对当前命令行窗口有效)修改;
    # 3、改变Windows的命令提示,默认是“C:\Users\Administrator>”,
         # 可通过命令“prompt 提示内容”(只对当前命令行窗口有效)修改;

# 4.修改dos命令窗口中的编码格式:
    # 命令窗口默认页面编码gbk,若是需要则可以通过命令"chcp "来修改;
    # chcp 65001  UTF=8 ;
    # chcp 936    默认的GBK(简体中文) ;
    # chcp 437    英语 ;

3.python运行批处理

#!/usr/bin/env python3
# -*- coding: utf-8-*-

import subprocess,os
from subprocess import PIPE

tmpfile='tmp.bat'

while os.path.isfile(tmpfile):
    tmpfile=tmpfile+tmpfile

with open(tmpfile, 'w+', encoding='GBK', errors='ignore') as f:
    text="""
@echo off
::将你的批处理写在下面:

echo success 
    """
    f.write(text)

p=subprocess.Popen([tmpfile,'1010','Tom'],shell=False,stdin=PIPE,stdout=PIPE,stderr=PIPE,text=True,encoding='CP936')
out,err=p.communicate('11')
print(out,err)
if os.path.isfile(tmpfile):
    os.remove(tmpfile)

4.批处理   2020/2/15

详细参考:http://club.topsage.com/forum.php?mod=viewthread&tid=597592 写的非常好,详细。

 

类别命令说明
批处理REM 和 ::注释;行内注释用%...%
 GOTO 标签跳转命令
 :Label标签
 CALL [drive:][path]filename [参数]调用批处理 call G:\Futures\database\tmp.bat
 START /d /wait /b 程序启动单独窗口(无/b)运行程序 start mysql /wait -u root -proot
 CHOICE /C YN /M "yes no"选择:根据输入不同的字符(Y/N)获得不同的errorlevel=1/2
   
Echoecho [{on│off}] [message]打开回显或关闭请求回显功能,或显示消息
 @echo off  关闭回显
 echo hello Word! 打印字符串;echo.(,;)输出回车换行
换行符echo.  [,:;/\+]空行 echo\Today is Friday.>>temp.txt
动态变量  
 %CD%                   代表当前目录的字符串  显示C:\Users\Administrator
 %DATE%                 当前日期echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%^:%time:~3,2%
 %TIME%                 当前时间(精确到ms) 输出2020-02-14 19:51
 %RANDOM%               随机整数,介于0~32767
 %ERRORLEVEL%           当前 ERRORLEVEL 值
 %CMDEXTVERSION%        当前命令处理器扩展名版本号
 %CMDCMDLINE%           调用命令处理器的原始命令行
 echo %SystemDrive%      显示系统盘盘符C:系统变量可以直接引用
查看变量  
 set                     显示系统和自定义变量(不含动态变量)
 set p显示所有以p开头的变量,要是一个也没有就设errorlevel=1
 echo %%  转义%字符 显示%
 echo  %cd%  获取当前进入的工作目录 显示G:\Futures\database
 echo  %~dp0获取当前bat文件的位置 显示G:\Futures\database\
   
 echo %p%                显示变量p代表的字符串,即aa1bb1aa2bb2
 echo %p:~6%             [7,...]显示变量p中第6个字符以后的所有字符,即aa2bb2
 echo %p:~6,3%          [7,8,9]显示第6个字符以后的3个字符,即aa2
 echo %p:~0,3%          [1,2,3]显示前3个字符,即aa1
 echo %p:~-2%            显示最后面的2个字符,即b2
 echo %p:~0,-2%          显示除了最后2个字符以外的其它字符,即aa1bb1aa2b
变量替换echo %p:aa=c%           用c替换变量p中所有的aa,即显示c1bb1c2bb2
 echo %p:aa=%            将变量p中的所有aa字符串置换为空,即显示1bb12bb2
 echo %p:*bb=c%          第一个bb及其之前的所有字符被替换为c,即显示c1aa2bb2
设置变量  
 setp=%p:*bb=c%         设置变量p,赋值为 %p:*bb=c% ,即c1aa2bb2
 set  x=1设置变量:x
 set /a x=20/3   (x/10)支持运算符,有小数时用去尾法x=6
 set /a x=”1&0″          ”与”运算,要加引号。其它支持的运算符参见set/?
 set x=                  取消p变量
   
用户输入set /p x=Please Input:将用户的输入赋值给一个变量p
 echo x= %x% 引用变量: 显示x=10
 echo x= %1引用变量:命令行参数1
 注意:变量在复合语句(if,for)是一次性全部替换;若复合语句中修改变量
  应在复合语句前后加SetLocal EnableDelayedExpasion,EndLocal
if选择  
 IF [NOT] EXIST filename commandif exist config.sys edit config.sys
 IF [NOT] string1==string2 command"%age%"=="20";%age%== 20;{%age%}=={20};{%name%}=={} 空str
  if /i {%name%}=={"tom"} ( echo 1 )else (echo 0 )   /i不区分大小写
  if %name%=="Tom" (   #if语句必须有左括号
  echo 1)else (               #else必须是)else(格式;下面一行可以提上来
  echo 0 )   
 IF [NOT] ERRORLEVEL number command方法一:dir C1: 
    Set errorcode=%errorlevel% 上条命令返回值用于复合语句(for,if)无变量延迟
    if %errorlevel% == 0 echo Run Err!
  方法二:setlocal enabledelayedexpansion 开启变量延迟
    dir C1:
 注:在cmd环境中无else子句  if !errorlevel! == 0 echo Run Err!
   
forfor {%variable│%%variable} in (set) do command [CommandLineOptions] 
多处理  
 &顺序执行多命令不管是否执行成功 dir z: & dir c:
 &&顺序执行多命令,出错后将不执行后面命令
 find "ok" C:a.txt && echo 成功如找到"ok"字样,就显示"成功",找不到就不显示
 ||顺序执行多条命令,当执行正确命令后将不执行后面的命令
 find "ok" C:a.txt || echo 不成功如找不到"ok"字样,就显示"不成功",找到了就不显示
管道| 
 echo Tom|findstr /i "to">nul && echo 无错误管道命令:前面结果作为后面输入
 dir *.* /s/a | find /c ".exe"输出当前文件夹及子文件夹里.exe文件个数
重定向  
 > / >> (先清除在写/附加文件尾部)输出重定向命令--将屏幕内容输出到文件(不存在则创建)
 type c:test.txt >prn(>con;>a.txt)内容输出到打印机(屏幕,文件)
 copy c:test.txt f: >nul拷贝文件不显示提示信息
 <从文件获得输入:echo 2005-05-01>temp.txt;date <temp.txt
 >& 将一个句柄的输出写入到另一个句柄的输入中。
 <& 从一个句柄读取输入并将其写入到另一个句柄输出中。
转义字符^ 
 echo ^^W ^> ^W>c:test.txt生成的文件内容为 ^W > W
参数  
 %0...%9 %*命令行参数(%* 所有参数)
 %~1删除引号("),扩充 %1
 %~f1将 %1 扩充到一个完全合格的路径名
 %~d1仅将 %1 扩充到一个驱动器号
 %~p1仅将 %1 扩充到一个路径
 %~n1仅将 %1 扩充到一个文件名
 %~x1仅将 %1 扩充到一个文件扩展名
 %~s1扩充的路径指含有短名
 %~a1将 %1 扩充到文件属性
 %~t1将 %1 扩充到文件的日期/时间
 %~z1将 %1 扩充到文件的大小
 %~$PATH : 1查找在PATH环境变量目录将%1扩充到找到的第一个完全合格名称或空字符串
 组合修定符来取得多重结果: 
 %~dp1只将 %1 扩展到驱动器号和路径
 %~nx1        只将 %1 扩展到文件名和扩展名
 %~dp$PATH:1 在 PATH 环境变量中查找 %1,找到的第一个文件的驱动器号和路径
 %~ftza1      将 %1 扩展到类似 DIR 的输出行
设置  
 SetLocal EnableExtensions启用"命令扩展名" 默认为启用
 SetLocal DisableExtensions停用"命令扩展名"
 SetLocal EnableDelayedExpasion启用"延缓环境变量扩充"
 SetLocal DisableDelayedExpansion停用"延缓环境变量扩充" 默认为停用
 EndLocal 恢复到使用SETLOCAL语句以前的状态;批处理结束系统会自动恢复默认值
说明:目录路径:用\不用/;空格用双引号del "d:\program files\file\my.txt";名称不含:\ / : * ? " < > 

 

批处理-for 2020/2/15

 

匹配文件: 
格式:for %%i in(set) do 命令 [参数]只匹配文件:i单字母;()集合;(cwd环境中用%i)
for %%i in (t*.*,???.txt) do echo %%i  显示当前目录匹配文件(不含路径;???文件名有1-3个字符)
for %%i in (d:\user\*.doc) do @echo %%i 显示指定目录匹配文件(含路径;d:\*.doc反斜杠可省)
  
匹配当前目录:(不含子目录) 
格式:for /D %%i in(set) do 命令 [参数]/d只匹配当前目录(不含子目录)
for /D %%i in (D:\*) do echo %%i 显示D盘根目录下的所有目录(不含子目录)
  
指定路径匹配文件:(含子目录)结果类似 F:\sys1903\log.txt
for /R [[d:]path] %i in (set) do 命令 [参数]以[d:]path为根目录及子目录;无d:则为当前目录;(.)目录树
for /r F:\ %%i in (*.txt) do echo %%i查找F:盘下所有xx.txt文件(含子目录)
  
循环数值序列: 
for /L %i in (start,step,end) do 命令 [参数]产生[start,end]增量为step
for /l %%i in (1,1,3) do @echo %%i输出1 2 3
for /l %%i in (3,-1,1) do @echo %%i输出3 2 1
set str=Tom,Bob;Jim 
For %i in (1 2,%str%) do @echo %i输出1 2 Tom Bob Jim 
  
文件处理:分析文件,str内容或命令输出结果,通过设置option获取结果
for /F ["options"] %i in (file-set) do 命令 [参数]或"file-set"如有usebackq选项 (可指定含空格的文件名)
for /F ["options"] %i in ("str") do 命令 [参数]或'str'
for /F ["options"] %i in ("命令") do 命令 [参数]或`命令`
参数: 
eol=;(仅仅1个字符)忽略分号开头的行
skip=n文件开始时忽略行数
delims=xxx  (默认空格定界符号)指分隔符集。这个替换了空格和制表符的
tokens=x,y,m-n* 每行变量提前tokens=2,3* 每行:%i,%j,%k=第2字符,第3字符,剩余字符
  
FOR /F  %%i in (temp1111.txt) do @echo %%i获得空白分割第一个str
FOR /F "eol=# skip=2 tokens=1,2*" %%i in (temp.txt) do @echo %%i %%j %%k  跳过2行
 
FOR /F "eol=# tokens=1,2* delims=,- " %%i in (temp.txt) do @echo %%i %%j %%k  忽略以#开头的行
FOR /F "tokens=1,2,3,4* delims=," %%i in ("aa bb,cc dd ee") do echo %%i %%j %%k %%l  结果显示aa bb cc dd ee
FOR /F "tokens=1* delims==" %%i IN ('set') DO @echo [%%i----%%j]
 
FOR /F "usebackq eol=; tokens=1,2* delims=,- " %%i in ("d:\test.txt") do echo %%i %%j %%k
FOR /f "usebackq tokens=1,2,3* delims=-, " %%i in ('aa bb,cc-dd ee') do echo %%i %%j %%k %%l
FOR /F "usebackq tokens=1* delims==" %%i IN (`set`) DO @echo [%%i----%%j]枚举环境变量名称和值
选项语法: 
%~I   FOR /F "delims=" %%i IN (temp1.txt) DO echo %%~i删除引号(不能删除中间和后面的单")
%~fI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~fi文件名(dir /b)前添加完整路径 类似C:\Program Files\Notepad++\a.txt
%~dI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~di如变量%%i是文件或目录名返回文件或者目录所在盘符 类似C:
%~pI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~pi仅获取变量的路径 类似\Program Files\Notepad++\
%~nI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~ni仅获取变量的文件名 类似a.txt
%~xI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~xi仅获取变量的扩展名 类似.txt
%~sI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~si扩展的路径只含有短名 类似C:\Program Files\Notepad++\a.txt
%~aI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~ai将 %I 扩展到文件的文件属性 类似d----或--a---
%~tI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~ti将 %I 扩展到文件创建日期/时间 类似2020/01/12 21:43
%~zI  FOR /F "delims=" %%i IN ('dir /b') DO @echo %%~zi将 %I 扩展到文件的大小 类似4096
%~$PATH:I  查找在路径环境变量目录的首个名称或""
 FOR /F "delims=" %%i IN ("notepad.exe") DO echo %%~$PATH:i结果C:\Windows\System32\notepad.exe在PATH变量指定路径里搜索notepad.exe,
 如果有notepad.exe则会把他所在绝对路径打印出来,没有就打印一个错误
组合修饰符获得多重结果: 
      set s='dir C:\WINDOWS\system32\notepad.exe /b' 
%~dpI FOR /F %%i IN (%s%) do echo %%~dpi仅将 %I 扩展到一个驱动器号和路径 C:\Program Files\Notepad++\
%~nxI FOR /F %%i IN (%s%) do echo %%~nxi仅将 %I 扩展到一个文件名和扩展名 notepad.exe
%~fsI FOR /F %%i IN (%s%) do echo %%~fsi扩展到一个带有短名的完整路径名 C:\Program Files\Notepad++\notepad.exe
%~dp$PATH:I FOR /F %%i IN (%s%) do echo %%~dp$PATH:i搜索列在路径环境变量的目录,找到首驱动器号和路径。C:\Windows\System32\
%~ftzaI FOR /F %%i IN (%s%) do echo %%~ftzai类似DIR 结果为C:\Program Files\Notepad++\notepad.exe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值