【批处理】批处理中的一些特殊技巧汇总(2015-6-26)

特殊符号

1,转义字符^

例子:

@echo off
for /f %%i in (ip_tmpok.txt) do echo %%i^| >> ip.txt

上例中的%%i^|,表示在%%i后面加上|符号,如果不加^号,CMD会吧|符号当做管道符号。

解释:

一般而言,^以转义字符的身份出现。因为在 cmd环境中,有些字符具备特殊功能,如>、>>表示重定向,|表示管道,&、&&、||表示语句连接……它们都有特定的功能,如果需要把它们作为字符输出的话,echo >、echo | ……之类的写法就会出错——cmd解释器会把它们作为具有特殊功能的字符对待,而不会作为普通字符处理,这个时候,就需要对这些特殊字符做转义处理:在每个特殊字符前加上转义字符^,因此,要输出这些特殊字符,就需要用 echo ^>、echo ^|、echo ^|^|、echo ^^……之类的格式来处理;

注意

1,在开启延迟环境变量的环境中,要用两个^^转义字符。可参考这段代码

@echo off
setlocal enabledelayedexpansion
set a=str^^!^^!^^!
echo !a!
pause


2,感叹号!

在设置了延迟环境变量的环境中,可以用双感叹号!!代替双%%,不然起不到延迟环境变量的作用。

代码:

@echo off
setlocal enabledelayedexpansion    ::注意这里
set str=test
if %str%==test (
    set str=another test
    echo !str!      ::注意这里
    echo %str%  ::区别
)

运行结果

163329_wCJA_1769899.png




命令

1,for /f中delims分节

其中"delims="和"delims= "有很大区别,第一个等号和双引号之间没有空格,意思是不做任何分节;第二个等号和双引号之间有一个空格,和默认的一样,以空格分节。

个人理解,for /f命中,如果不指定delims,默认以空格和跳格键分节,但有些时候不太希望分节,可以采用第一种方式强制语句不分节。





算数运算

1,求模

在et /a语句中,利用%%双百分号求模。

例子:

@echo off
:number
cls
echo 与2的求模运算
set /p n=输入一个数字:
set /a m=n%%2
echo %m%
pause
goto number


转载于:https://my.oschina.net/snake1989/blog/470118

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值