學會這幾個.你就能成爲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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章