bat 命令 常用配置及其用法

我的未来我决定 提交于 2020-11-17 05:56:41

1.初衷:

bat 批处理文件:当我懒得一个个操作的时候,可以把若干东西放到一个文件里面,开机运行或者需要的时候手动运行、节省时间。

 

2.命令集说明

2.1 常用命令

2.1.0 help

命令 /?      help 命令
type /? >>tmp.txt  (把 type 命令的帮助信息写入到tmp.txt文件里)

2.1.1 @  ( 仅影响当前行, 相对于echo off 来说,是遮住了一行,而不是挡住了一片 )

不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。
eg 关闭回显(之后的指令不再显示,只输出执行结果):@echo off

2.1.2 echo

打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。

echo 显示当前回显设置

echo on   打开回显,即显示指令输入及其输出结果

echo off    隐藏后面的所有指令及其输出结果( 在遇到 echo  on  之前 )

echo 'hello'   单纯输出字符串

2.1.3 rem    (可用::,: 代替rem, :Here is the description , ::Here is the description)

rem   注释命令  :  @Rem Here is the description

2.1.4 pause

pause     暂停,使程序挂起

@echo off
:begin
copy a:*.* d:\\back
echo Please put a new disk into driver A
pause
goto begin

,驱动器 A 中磁盘上的所有文件均复制到d:\\back中。显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理

2.1.5 call

call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]           指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名

一个批处理程序调用另一个批处理程序,并且不终止父批处理程序

2.1.6 start 

启动单独的“命令提示符”窗口来运行指定程序或命令    

start ["title"] [/dPath] [/min] [/max] [{/separate |/shared}] [{/low | /normal | /high | /realtime | /abovenormal | belownormal}][/wait] [/B] [FileName] [parameters]

 

"title" 指定在“命令提示符”窗口标题栏中显示的标题。

/dpatch 指定启动目录。

/i 将 Cmd.exe 启动环境传送到新的“命令提示符”窗口。

/min 启动新的最小化窗口。

/max 启动新的最大化窗口。

/separate 在单独的内存空间启动 16 位程序。

/shared 在共享的内存空间启动 16 位程序。

/low 以空闲优先级启动应用程序。

/normal 以一般优先级启动应用程序。

/high 以高优先级启动应用程序。

/realtime 以实时优先级启动应用程序。

/abovenormal 以超出常规优先级的方式启动应用程序。

/belownormal 以低出常规优先级的方式启动应用程序。

/wait 启动应用程序,并等待其结束。

/b 启动应用程序时不必打开新的“命令提示符”窗口。除非应用程序启用 CTRL+C,否则将忽略 CTRL+C 操作。使用 CTRL+BREAK 中断应用程序。

2.1.7 choice

 choice 使用此命令可以让用户输入一个字符,从而运行不同的命令 

@echo off
choice /c dme
if errorlevel 3 goto defrag
if errorlevel 2 goto mem
if errotlevel 1 goto end

:defrag
echo '1'
goto end

:mem
echo '2'
goto end

:end
echo good bye

pause

2.1.8 if

if 表示将判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式

if "参数" == "字符串"     if "%1"=="a" format a:

if exist config.sys edit config.sys              if exist config.sys type config.sys

if errorlevel 2 goto x2

 

else 连用

if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) else (echo comment3 )

2.1.9 for

循环操作

 

2.2 组合命令

2.2.1 & 

同时执行多条命令,而不管命令是否执行成功          dir z: & dir c:\\Ex4rch

2.2.2 &&

同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令       dir z: && dir c:\\Ex4rch

2.2.3  ||

同时执行多条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令          dir fdImg || start website.txt

 

2.3  管道命令

2.3.1  |           

第一条命令 | 第二条命令 [| 第三条命令...]

第一条命令的结果作为第二条命令的参数来使用           netstat -n -p tcp|find ":49264">D:\\IP.log

2.3.2  >、>>

输出重定向命令

将一条命令或某个程序输出结果的重定向到特定文件中, > 与 >>的区别在于,>会清除调原有文件中的内容后写入指定文件,而>>只会追加内容到指定文件中

echo hello world>website.txt

 

2.4 系统参数  ( 用户及其设置不同值不同 )

%SystemRoot% === C:\WINDOWS (%windir% 同样)
%ProgramFiles% === C:\Program Files


%USERPROFILE% === C:\Documents and Settings\Administrator (子目录有“桌面”,“开始菜单”,“收藏夹”等)             

如: 访问我桌面的某个文档       start %USERPROFILE%\desktop\website.txt         

 C:\Users\admin\Desktop>start C:\Users\admin\desktop\website.txt

 

%APPDATA% === C:\Documents and Settings\Administrator\Application Data
%TEMP% === C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp (%TEM% 同样)
%APPDATA% === C:\Documents and Settings\Administrator\Application Data
%OS% === Windows_NT (系统)
%Path% === %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem (原本的设置)
%HOMEDRIVE% === C: (系统盘)
%HOMEPATH% === \Documents and Settings\Administrator

 

3.实际经验分享

3.1 .bat 文件乱码问题

新建一个txt文件   -   文件”=》“另存为”,  在编码的时候选择“ANSI”   -   更改为 .bat 后缀  或者 .cmd 

3.2 批量打开程序

@echo off

start C:\Users\admin\Desktop\mark.txt
start C:\Users\admin\Desktop\route.txt
start C:\Users\admin\Desktop\styleLogin.txt

start C:\"Program Files (x86)"\Tencent\QQ\Bin\QQScLauncher.exe
start C:\"Program Files (x86)"\Tencent\WeChat\WeChat.exe
start C:\Users\admin\AppData\Roaming\360se6\Application\360se.exe

start C:\Users\admin\Desktop\text.xlsx

echo "hello myboy"

pause

扩展:

开机启动目录

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

3.3 创建目录文件并比较

dir*.exe>exeback.txt & dir *.dll>dllback.txt

fc exeback.txt exeback1.txt>diff.txt

3.4 传递参数给批处理文件

 %[1-9]表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。

变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用 %1 到 %9 顺序表示。

call test2.bat "hello" "haha" (执行同目录下的“test2.bat”文件,并输入两个参数)
在“test2.bat”文件里写:
echo %1 (打印: "hello")
echo %2 (打印: "haha")
echo %0 (打印: test2.bat)
echo %19 (打印: "hello"9)


 

4.常用 api

md d:\aa  创建文件夹

set /p pass=请输入密码      等待用户输入、同时设置变量 ( 附带 pause 作用 )

color 0a     设置控制台颜色   ( 背景色 0   文本颜色  a   ,  both : 0-f )

cls : 清屏

start C:\Users\admin\AppData\Roaming\360se6\Application\360se.exe http://www.baidu.com    打开浏览器 并访问网站

修改文件的文件名    rename test.jpg test2.JPG         rename *.jpg *.888.JPG

ren 原文件名 新文件名 重命名文件名
tree 以树形结构显示出目录,用参数-f 将列出第个文件夹中文件名称
type 文件名 显示文本文件的内容

tasklist >list.txt   将所有进程保存到list文件中(默认保存到当前目录)

 

5. 查看内置命令帮助指令

ver /? cmd /? set /? rem /?
if /? echo /? goto /? for /?
shift /? call /? type /? find /?
findstr /? copy /?

 

6.字符串处理

6.1  割字符串,以查看时间为例

%源字符串:~起始值,截取长度%  (起始值从0开始;截取长度是可选的,如果省略逗号和截取长度,将会从起始值截取到结尾;
截取长度如果是负数,表示截取到倒数第几个。)
"%time%"  显示如:"11:04:23.03" (完整的时间"hh:mm:ss.tt")
"%time:~0,5%" 显示"hh:mm"(即"11:04"),其中0表示从右向左移位操作的个数,5表示从左向右移位操作的个数
"%time:~0,8%" 显示标准时间格式"hh:mm:ss"(即"11:04:23",前8个字符串)
"%time:~3,-3%"显示"mm:ss"(即从第4个开始,截去最后3个的字符串)
"%time:~3%" 显示"04:23.03"(即去掉前4个字符串)
"%time:~-3%" 显示".tt"(即最后3个字符串)
上面的字串分割格式,也可以用于其它地方,如目录路径:"%cd:~0,10%"

6.2  替换字符串

set a="abcd1234"
echo %a% 显示:"abcd1234"
set a=%a:1=kk% 替换“1”为“kk”
echo %a% 显示:"abcdkk234"

 

6.3 字符串合并

set str1=%str1%%str2%    (合并 str1 和 str2)

6.4  计算字符串长度

没有现成的函数。如下程序利用 goto形成循环,不断将字符串截短1,并记录截短的次数,到字符串变成空时的次数即长度。
set testStr=This is a test string
:: 将 testStr 复制到str,str 是个临时字符串
set str=%testStr%
:: 标签,用于goto跳转
:next1
:: 判断str是不是空,如果不是则执行下边的语句
if not "%str%"=="" (
:: 算术运算,使num的值自增1,相当于num++或者++num语句
set /a num+=1
:: 截取字符串,每次截短1
set "str=%str:~1%"
:: 跳转到next1标签: 这里利用goto和标签,构成循环结构
goto next1
)
:: 当以上循环结构执行完毕时,会执行下边的语句
echo testStr=%testStr%
echo testStr的长度为:%num%

 

7. 文件处理

 清空文件夹   del          del  /s /q test         ( 彻底删除 指定文件 即  清空文件夹)

删除文件夹   rd  rmdir          rd   /s /q test     直接删除整个文件夹

新建文件夹     md  mkdir   ::md %cd%\hello\cd      mkdir %cd%\hello\cd

 

 

相关指令含义

/S  除目录本身外,还将删除指定目录下的所有子目录
/Q 安静模式,带 /S 删除目录树时不要求确认

 

 

last. 相关文档

windows bat脚本编写

Bat命令学习

BAT 批处理脚本 教程

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!