@echo off
set info=hello world
echo %info%
if"hello world"==%info% echo they are equal 1
if"hello world"=="%info%"echo they are equal 2
set info="hello world"if"hello world"==%info% echo they are equal 3
set info=hello
if hello==%info% echo they are equal 4
pause
字符串的截取与替换
截取的语法:%变量名:~位置n,长度m%
比如 %money:~2,3% 表示从money变量的第二位开始截取三个字符串
如果位置为正数则从左边数第n位,为负数则表示从右边数第n位。
如果长度为正数则表示从位置开始保留m位字符,如果长度为负数则表示从右边数舍弃m位字符。
替换的语法:%变量名:待替换的字符串=要替换成的字符串%
如果要替换成的字符串为空,那么表示要删除待替换的字符串。
如果要替换成的字符串前面加*,表示替换第一次出现的该字符及其前面的所有字符。
实例:
@echo off
set info=hello world
echo 截取从第2位置开始3个字符"%info:~2,3%"echo 截取从第2位置开始到倒数第2个字符"%info:~2,-2%"echo 截取从倒数第8位置开始3个字符"%info:~-8,3%"echo 截取从倒数第8位置开始到倒数第3个字符"%info:~-8,-3%"echo ————————————————————
set info=hello world
echo 替换前的值: "%info%"set info2=%info:world=xie%
echo 替换后的值: "%info2%"set info="hello world"echo 替换前的值: %info%
set info2=%info:world=xie%
echo 替换后的值: %info2%
echo ————————————————————
echo 去掉world字符串:%info:world=%
echo 使用通配符\*替换指定字符串及前面的字符串:%info:*or=hi %
pause
注释
rem在回显打开状态是会显示出来的,但是::不管回显是否打开都不显示,看下面实例:
REM 这是一个注释 REM
:: 这是一个注释 ::
@echo off
echo ——————————
REM 这是一个注释 REM
:: 这是一个注释 ::
set num=1 rem hello
echo %num%
echo helloworld rem this is a test
pause
特殊字符处理
有一些特殊字符如果要作为普通字符输出的话需要做一些处理,看下面实例:
@echo off
:: 一般的关键字在前面加'^'echo ^>hi
:: 或者直接使用""引起来
echo">"
REM echo'>' 不起作用
:: %需要%%
echo %%
pause
文件的读写
先建立一个test.txt文本文件
hello world
I am new to you
@echo off
for /f "delims=" %%x in(test.txt)doset content=%%x
echo %content%
set /p content2=<test.txt
echo %content2%
echotest world > hi.txt
echo 3>hi.txt
echo 2 > hi.txt
>hi.txt echo heheheh
pause
注意使用重定向有0-9个数字。0代表标准输入,1代表标准输出,2代表错误输出。平常我们使用重定向符>默认是1。也就是echo hi > test.txt 只是 echo hi 1> test.txt的缩写。所以echo 3>hi.txt 并不会把3输出到文件而echo 2 > hi.txt 会把2输出到文件。