学会这几个.你就能成为bat脚本小子了...(转来看看的)

批处理中的符号 [详解+示例]经常有朋友给我短消息,问某个符号是什么意思
所以今天特地写了这个贴





1 . 点
    与echo连用,作用是换行
    示例1 [输出空行]
    echo.


2 > 定向符[输出]
   将命令的输出进行重定向 [一般用于将结果写入文件]
   注意 nul 为空设备 >nul 则用于屏蔽输出内容 [如 pause>nul]
   示例2 [向1.txt中写入字符串 wind]
   echo wind>1.txt


3 >> 定向符[输出]
   将命令的输出进行重定向   [一般用于将结果写入文件]
   注意,定向到文件时,它是在末尾追加 > 则会覆盖
   示例3 [向1.txt中追加写入字符串 wind]
   echo wind>>1.txt


4 < 定向符[输入]
   配合set /p 使用时,从指定的文件中获取字符串 赋值给变量
   示例4 [将1.txt中第1行内容赋值给变量 wind]
   set /p wind=<1.txt



5 & 连接符
   连接两个命令
   注意 不论前面的命令是否成功执行 后面的命令都将执行
   示例5 [依次执行两个echo 命令]
   echo wind& echo snow


6 && 连接符
   连接两个命令
   注意 仅当前面的命令成功执行时 后面的命令才会被执行
   示例6 [echo 命令成功执行   type 命令也将被执行]
   echo wind&& type 1.txt
   示例7 [hello 命令执行失败   type 命令不会被执行]
   hello&& type 1.txt


7 || 连接符
   连接两个命令
   注意 仅当前面的命令执行失败时 后面的命令才会被执行
   示例8 [echo 命令成功执行   type 命令不会被执行]
   echo wind|| type 1.txt
   示例9 [hello 命令执行失败   type 命令将被执行]
   hello|| type 1.txt


8 | 传递符
    将前面命令的结果 传递给后面的命令使用 [一般用于查找]
   示例10 [显示字符串wind 并 传递给find 查找 关键字 w]
    echo wind| find "w"
    2,6,7,8综合 示例11 [将字符串传递给find查找 并 输出查找结果]
    echo wind| find "w">nul&& echo 找到字符w|| echo 未找到字符w


9 ^ 转义符 [脱字符]
   脱去特殊符号的作用 使之成为一个纯粹的符号
   示例12 [输出字符串 &&&&& ]
   echo ^&^&^&^&^&



10 @ at
    其作用相当于 echo off 不显示命令本身
    不同之处是@仅处理单个命令 echo off则是全局的
    示例13 [命令行不会显示]
    @echo wind


11 % 百分号
    两个百分号表示取值
    示例14 [显示变量 wind 的值 smile]
    set wind=smile
    echo wind的值为 %wind%
 注意,如果要输出一个百分号 则在批处理中要写成两个


12 * 星号
    通配作用
    示例15 [删除所有文本文件]
    del *.txt



下面几点要单独说一下

一。
>nul 或者 1>nul作用是屏蔽成功执行命令的输出内容
2>nul                   作用是屏蔽命令执行失败的输出内容
1>nul 2>nul           作用是屏蔽的所有输出提示 [不论正确与否]

二。
echo时,后面不一定要根空格,可以是其他符号   比如
echo.wind 或者是 echo=wind 或者是 echo;wind 等

三。
for 循环中 一些符号的作用和空格一样,不会被当作符号输出 比如
for %%1 in   (wind = snow , smile ; noom)do echo %%1

四.
<nul 表示确定的意思,一般用于在屏幕上显示字符
如 set /p=wind<nul
将在屏幕上显示wind字符串
注意:这种用法显示字符串后,光标不会换行

================================================
for嵌套if问题for 使用的参数的时候用if else就失效了

@echo off
for /r d:\batoh %%i in (*.txt) do (
if exist "%%i" (
del /q /s "%%i">nul >nul
echo 已成功删除
) else (
echo 无此文件,无需删除
)
)
pause

即使不存在文件后面的else语句失效了

可是这个就行了
@echo off
for %%i in (d:\batoh\) do (
if exist %%i*.txt (
del /q /s "%%i">nul 2>nul
echo OK
) else (
echo NO
)
)
pause

回复 楼主 风行者 的帖子其实要达到你那个效果,用dir命令加上两个连接符就可以了



@echo off
dir /s *.txt 1>nul 2>nul&& del /s /q   *.txt&&echo 删除成功||echo 无文本文件
pause>nul
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章