当前位置:   article > 正文

dos环境下,外网查看,bat批文件处理,bat文件常用的便捷方式_dos运行setup.bat

dos运行setup.bat

dos环境下运行出现乱码问题

将bat文件→txt文件后→txt另存为ANSI格式的bat文件
  • 1

dos使用的小技巧

1. *.* 可以简写为 .


如:del *.* == del.  ::表示删除所有的内容
  • 1
  • 2

2. 分多次显示⽂件内容

多次显示时,enter键每次多显示一行,空格直接显示下面全部

MORE<filename
TYPE filename|more
-----
例如:@echo off
more< demo.txt
type demo.txt|more   ::和上面一行功能一样
pause
----
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3. 向⽂本⽂件中追加数据

COPY filename+CON
TYPE CON>>filename
输⼊完毕后按F6
  • 1
  • 2
  • 3

在这里插入图片描述
在这里插入图片描述

4. 清空文件:TYPE NUL>filename

5. 使⽤TYPE命令"拷⻉"⽂件 TYPE filenamel>filename2

6. pushd、popd⽤法 返回到使⽤过的路径下

在这里插入图片描述

7. ECHO, ECHO; ECHO+ ECHO/ ECHO\

8.延时

@echo off
echo 延迟前...
ping /n 2 127.0.0.1>nul
echo 延迟后...
pause>nul
:: 第二种延迟
@echo off
echo 延迟前....
for /l %%a in (1,1,10000) do echo %%a>nul
echo 延迟后....
pause>nul
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

9.显示获取文件首行内容

@echo off
set /p str=<test.txt
echo %str%
pause >nul
  • 1
  • 2
  • 3
  • 4

实例1.一个在百度搜索关键字

@echo off   
::/p说明是外部输入参数
set /p a=please input your value:
start  http://www.baidu.com/s?wd=%a%
pause     
  • 1
  • 2
  • 3
  • 4
  • 5

实例2.程序进度

@echo off   
mode con cols=113 lines=15 &color 9f

cls
echo.
echo 程序正在执行。。。。。
echo.

echo _______________________________

set /p =<nul
for /L %%i in (1 1 38) do set /p b=<nul&ping /n 1 127.0.0.1>nul
echo 100%%
echo _________________________________
pause     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

外网查看方式

1.使用浏览器的某些网址

直接进入对应的网址就能查看,常用网址有

1. https://www.ipaddress.com/ 简记为iPad dress.com
2. https://www.ip138.com/   简记为ip138.com
3. https://en.ipshu.com/  简记为ipshu.com
  • 1
  • 2
  • 3

2.在dos环境下使用curl查看

参考:https://blog.csdn.net/longzhizhui926/article/details/83002685

curl -- help 查看参数
curl ifconfig.me    #只返回外网IP地址
curl icanhazip.com   # 也只返回外网ip
curl ipinfo.io/ip     # 也只返回外网ip
curl ipecho.net/plain    # 也只返回外网ip
curl www.trackip.net/i  # 返回一个网页源码,也可看出公网IP
curl ip.sb       # 也只返回外网ip
#返回IP和地区
curl cip.cc # 返回中文地址和IP号
curl ipinfo.io  # 英文地址

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

建立空文件

1. echo [off/创建文件中添加的内容]> test.txt
2. type nul> 文件名称  #通常和excel配合使用产生多个文件名
3. copy nul 文件名  #也能得到相同效果
4. copy con 文件名 #输入后紧接着可以输入内容,CTRL+z结束输入,不太适合批量操作
  • 1
  • 2
  • 3
  • 4
注意:
echo 创建新文件时,
1.若有添加内容,不会显示”ECHO 处于关闭状态“
2.若echo未跟添加内容,新建文件中会出现”ECHO 处于关闭状态“
  • 1
  • 2
  • 3
  • 4

批处理文件中

echo off > test.bat # 会建立一个空文件
  • 1

test.bat中的代码

@ echo off     %关闭回显,不显示代码内容%
echo hello world!  %使用echo 输出显示内容%
pause      %暂停%
  • 1
  • 2
  • 3

在这里插入图片描述

特殊字符

@
	隐藏执⾏的命令,只显示结果。
	echo 你好  
	@echo 你好
	pause
&
	命令连接符号,就是将两个命令连续执⾏,不⽤分⾏
	dir c:\ & dir d:\ & dir e:\
&&
	连接两个命令,当&&前的命令成功时,才执⾏&&后的命令
	@echo off 关闭回显
	echo hello sanyuan 在屏幕显示“hello sanyuan”
	pause
	echo 你好
	@echo 你好
	pause
	dir c:\ && dir d:\ dir z:\ && dir d:\
|
	管道符号,就是将上⼀个命令的输出的内容,作为下⼀个命令的输⼊内容
	netstat -an | find "444"
||
	命令连接符号,表示上⼀条命令执⾏失败后,才执⾏||符号后的内容
	dir z: || dir c:\
>
	重定向符号,将命令的输出结果重定向到其后⾯的设备中去,后⾯的设备中的内容被覆盖
	dir c:\ >d:\test.txt
>>
	重定向符号,将命令的输出结果重定向到其后⾯的设备中去,后⾯的设备中的内容会被增加在
	后⾯
	dir c:\ >>d:\test.txt
	dir d:\ >>d:\test.txt
^
	取消特殊符号的作⽤
	echo ^> >c:\1.txt
*
	通配符号,表示任意个字符
	del c:\windows*.log
?
	通配符号,表示任意⼀个字符
	dir c:\?indows
.
表示当前⽬录
	dir .\	
..
	表示上⼀级⽬录
	dir ..\
" "
	界定符号,通常⽤来引⽤有空格的⽬录
	dir "c:\Documents and settings"
:
	标签定位符号,表示后⾯的内容是⼀个标签名
	@echo off
	:again
	echo welcome!
	pause goto again
,
某些时候可以当空格来使⽤
	echo, dir,c:\
;
	分号,当命令相同时,可以将不同⽬标⽤来隔离
	dir c:\;d:\
::
	表示后⾯的语句是注释
	@echo off ::显示c盘根⽬录⽂件 
	dir c:\ 
	pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66

变量传入bat文件的方式

一个自动循环的程序例子,其中(::后)和(两个%)之间的都是注释,echo后是将参数输出显示,否则直接将变量作为参数放入程序中。
下面代码是一个名为test.bat的文件中

特殊的%0
::%关闭屏显,不显示代码内容%
@echo off   
echo %0     %输出显示test.bat%
%0   %这样会执行本身.bat文件,导致一直循环执行%
pause      
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

执行bat文件时的参数传入(%形式)

作用

%0 %1 %2 %3 %4 %5 ....到%9,还有⼀个%*
%0 返回批处理所在的绝对路径/可使批处理程序⽆限循环执⾏
%1返回批处理的第⼀个参数
%2返回批处理的第⼆个参数
%3-%9同样如此
%*返回所有参数的值
```shell
::%关闭屏显,不显示代码内容%
@echo off   
echo %1
echo %2
echo %3
echo %*
pause      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

在这里插入图片描述
在这里插入图片描述

程序中的变量命名和值的设定set

需要注意的是:赋值的”=“两边没有空格符号,不然出错

::%关闭屏显,不显示代码内容%
@echo off   
set val=test
echo %val% ::显示val的值
pause      
  • 1
  • 2
  • 3
  • 4
  • 5
控制台输入和set配合使用

这时只要在控制台输入:test.bat teh,控制台回车后输出teh

::%关闭屏显,不显示代码内容%
@echo off   
set val=%1
echo %val%
pause      
  • 1
  • 2
  • 3
  • 4
  • 5
控制台运行程序后输入

就像python程序中的input一样,

::%关闭屏显,不显示代码内容%
@echo off   
::/p说明是外部输入参数
set /p val=please input your value:
echo %val%
pause      
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

请添加图片描述

set /a 主要是⽤来进⾏数学运算

符号作⽤
()分组
! ~ -⼀元运算符
* / %算数运算符
+ -算数运算符
<< >>逻辑移位
&按位“与”
^按位“异”
= *= /= %= += -=赋值
&= ^= = <<= >>=
,表达式分隔符

计算的格式
需要注意,除加减乘除外,其他符号计算需要引号

set /a var=1+1
set /a var=4-2
set /a var=2*2
set /a var=6/3

set /a var= 1 "|" 1
set /a var= 1 "^" 1
set /a var= 1 "&" 1
set /a var= 1 "+" 1
set /a var= 1 "%" 1
set /a var= 2 "<<" 2
set /a var= 4 ">>" 2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

环境变量

1 字符替换 %PATH:str1=str2%
@echo off
set var=www.sanyuan.com
echo first:%var%
set var=%var:1=2%
echo end:%var%
pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

由于原字符串无l,没有进行替换
在这里插入图片描述

@echo off
set var=www.sanyuan.com
echo first:%var%
set var=%var:.=A%
echo end:%var%
pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

将英文句号替换成了大写A
在这里插入图片描述
(2) 截取字符
原始字符set var=www.sanyuan.com
%PATH:~A,B% 截取位置从下标A开始(最开始是0),截取B个

::[1,3]
set var=%var:~1,3%`后的结果`ww.
  • 1
  • 2

%PATH:~-B% 反⽅向截取B个,从最后一位向前截取B个

::[-5,-1]
set var=%var:~-5%  '结果是'n.com
  • 1
  • 2

%PATH:~A,-B% 截取位置从下标A开始,向后,反向B个去除

::[0,-5)
set var=%var:~0,-5%  '结果是'www.sanyua
::[3,-5)
set var=%var:~3,-5%  '结果是'.sanyua
  • 1
  • 2
  • 3
  • 4

个人总结:

%PATH:~A,B%  :
A,B为正,范围[A,B] ,最左第一个为0
A为负,无B,范围[A,-1]  ,最右边是-1,然后向左依次减少
A为非负,B为负,范围[A,B),A以正数编号,最左为0;B以最右为-1,负数编号
  • 1
  • 2
  • 3
  • 4

dos命令中的if判断

if判断

IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
  • 1
  • 2
  • 3
@echo off
ipconfig
if errorlevel 1 goto a  ::跳转到标签  
if errorlevel 0 goto b
:a  ::设置标签
echo result is a!
pause
exit
:b  ::设置标签
echo result is b!
pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

if-else

@echo off
IF EXIST demo.txt (del demo.txt) ELSE (echo is not exist!)
pause
  • 1
  • 2
  • 3

数值大小比较

符号作⽤
EQU (equal)等于
NEQ (not equal)不等于
LSS (less)⼩于
LEQ (less equal)⼩于或等于
GTR (greater)⼤于
GEQ (greater equal)⼤于或等于

使用if嵌套比较数值范围

@echo off
set /p var=请输⼊⼀个数字:
if %var% gtr 5 if %var% lss 10 echo 这是⼀个⼤于5⼩于10的数!
pause
  • 1
  • 2
  • 3
  • 4

for 循环

简单的for

%%a是个变量。命名规则是从⼩写a-⼩写z,和⼤写A-⼤写Z

@echo off
for %%a in (c:\sy.txt) do echo %%a
pause
  • 1
  • 2
  • 3
for对路径的搜索格式
@echo off
for /d %%a in (*) do echo %%a  ::当前文件夹下的所有路径,显示出路径名称
pause
  • 1
  • 2
  • 3
for对某个路径下的某种文件的搜索
@echo off
::这里表示搜索所有c盘下的exe文件,这里的c:\可以省略表示当前路径下搜索
for /r c:\ %%a in (*.exe) do @echo %%a
pause
  • 1
  • 2
  • 3
  • 4
/l基本格式:FOR /L %variable IN (start,step,end) DO command[command-parameters]
@echo off
::显示1,2,3,4,5
for /l %%a in (1,1,5) do @echo %%a
pause
  • 1
  • 2
  • 3
  • 4
解析⽂件:for /F “ParsingKeywords” %% Variable in (FileNameSet) do Command

筛选出符合条件的文本
几个参数代表的意思:
eol表示开头是这个字符的为注释掉的
skip 表示忽略的行数
tokens表示将字符串分开后,第几个列
delims表示一行字符按照什么标志分开,什么不写,默认是空格
当以**@作为注释行标志**,以空格作为分割第一列的字符串输出
在这里插入图片描述
当以**;作为注释行标志**,以空格作为分割第2列的字符串输出
在这里插入图片描述

@echo off
:: ;作为注释标志,下面的每行以空格分开,取第二、四、五个输出
for /f "eol=; tokens=2,4,5 delims= " %%a in (demo.txt) do echo %%a %%b %%c
pause
  • 1
  • 2
  • 3
  • 4
for所有环境变量解析出

使用usebackq 得到的是后面in(‘dos输入’)的结果

::set:显示、设置或删除 cmd.exe 环境变量。句中delims==,第二个等号指的是分割的符号
::所以输出的是环境变量名字
FOR /F "usebackq delims==" %%i IN (`set`) DO echo %%i
::dir是路径,输出的是还是dir显示的内容,因为原来内容中没=号
FOR /F "usebackq delims==" %%i IN (`dir`) DO echo %%i
  • 1
  • 2
  • 3
  • 4
  • 5
for 变量替换增强符号

在这里插入图片描述

~I - 删除任何引号("),扩展 %I
%~fI - 将 %I 扩展到⼀个完全合格的路径名,不只是文件名
%~dI - 仅将 %I 扩展到⼀个驱动器号,根目录的磁盘名字
%~pI - 仅将 %I 扩展到⼀个路径,
%~nI - 仅将 %I 扩展到⼀个⽂件名
%~xI - 仅将 %I 扩展到⼀个⽂件扩展名
%~sI - 扩展的路径只含有短名
%~aI - 将 %I 扩展到⽂件的⽂件属性
%~tI - 将 %I 扩展到⽂件的⽇期/时间
%~zI - 将 %I 扩展到⽂件的⼤⼩
%~$PATH:I - 查找列在路径环境变量的⽬录,并将 %I 扩展
到找到的第⼀个完全合格的名称。如果环境变量名
未被定义,或者没有找到⽂件,此组合键会扩展到
空字符串
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

程序的调用

调用子程序

有些像goto

@echo off
call :sub sum 10 20 50
echo the result: %sum%
pause >nul
:sub
set /a %1=%2+%3+%4
goto :eof
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
不同文件程序之间的调用
call:可在一个bat文件中运行调用另一个bat文件
  • 1

在这里插入图片描述
在这里插入图片描述

不同文件的程序之间的参数传递

将参数放在被调用文件的后面用逗号或空格隔开

call son_bat.bat  3 4
  • 1

在这里插入图片描述

同一个文件的程序调用子程序

在这里插入图片描述

@echo off
call :sub sum 10 20 50
echo 运算的结果:%sum%
pause 
:sub
set /a %1=%2+%3+%4
goto :eof
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/258868
推荐阅读
  

闽ICP备14008679号