当前位置:首页文章首页 IT学院 IT技术

批处理(bat)学习的一些总结

作者:  来源:  发布时间:2012-1-11 14:01:50  点击:
(del %0

echo 能找到我,就给你发糖

pause>nul)

::括号里的内容被理解成一个语块,运行其中的命令时不需从文件读取,所以就算删除自身仍可运行。

echo "test&pause|sort

::当一行命令中存在奇数个双引号时,将会转义其后所有本行字符

for /f tokens^=2delims^=^" %%a in ("123"test"456") do echo %%a

::通过对特殊字符的转义,在for中用双引号当分隔符

for /f tokens^=2delims^=^" %%a in (^"123"456") do echo %%a

set /p=^"""

::当一组字符串中含有奇数个双引号时经常会出错,解决方法是转义其中的一个,保持有效的双引号成对,可是引号对之内无法用转义符对其转义,所以转义符要放在引号对之外使用

set /a "1/(%random%%%2)"&&set com=||set com=/f "tokens=2"

for %com% %%a in ("123 234 345") do echo %%a

::假如随机值为偶数,则显示指定字符串第二段,否则显示整段。这里用变量来定制命令,会比常规办法(一条if和一条命令对应)更灵活和省事,但是要注意的是,变量延迟是在解释语块之后进行,所以这里的%com%不能使用变量延迟。

set /a \test1=123,test2=234

(@echo off

for /f "tokens=1* delims==" %%a in ('set\') do echo %%b

)|sort

::sort对for命令的输出进行排序,那个@echo off并非多余,因为通道之前的若是语块(for、if或者被成对括号包起来的语句),该语块中的内容将会以cmd /c的形式运行,此时的回显是打开的,而变量延迟则是默认关闭的。

dir /ad 123\&&md234||rd 345&tree /f|more

::当存在123文件夹时,创建234文件夹,否则删除345文件夹,无论结果如何,接下来都会逐屏显示当前目录树。重点是管道命令、逻辑连接符的灵活运用

2、句柄的妙用

@echo off 2>nul 3>nul

这个命令不存在...

echo 错误回显呢?

pause

::句柄备份,可用于屏蔽所有正确或错误回显

cd.>1.txt 2>2.txt 3>3.txt 4>4.txt 5>5.txt 6>6.txt 7>7.txt 8>8.txt 9>9.txt

::用一个命令创建9个文件,效率自然提高了

@echo off

(for /r %%a in (*.*) do del /f /s "%%~nxa" 3>>"%%a") 2>nul 4>>%0

pause

::利用写入句柄会占用文件的特性实现高效删除重复文件

待续...

首页 上一页 [1] [2] [3]  下一页 尾页

文章评论

软件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z