2015年10月21日 星期三

「Batch批次處理」 echo on 、echo off、 @echo off差別

 起因:
      在實驗室常造成ip 衝突,每次都要人工設定相關訊息(ip ,mask,gateway)並且回去又要再改一次,特別麻煩且我很懶。。。

遇到的問題:

       對於echo off、 @echo off差別是?

解決:

在batch腳本中@與echo off有類似的功能、用途:

1.@,若一開始就有"@"則这一行的命令就不显示了(只顯示結果)

2.echo off,在echo off 之後後面(不包含echo off)的所有指令都不會顯示(只顯示結果)

3.@echo off,意味著連echo off都沒有顯示出來


我知道,肯定還是不懂在說什麼,舉個例子吧:

以在自動去設定ip為例子:

1.這例子以echo (on)
echo 
set IP=10.118.83.11
set MASK=255.255.255.0
set GW=10.118.83.1
set DNS=10.118.8.28
set DNS2=160.118.8.29
netsh interface ip set address name="乙太網路" source=static %IP% %MASK% %GW%
netsh interface ip set dns "乙太網路" static %DNS%
netsh interface ip add dns "乙太網路" %DNS2%
echo 已將IP地址設為:%IP%,按任一鍵後繼續……
pause

















2.這例子以echo off
echo off
set IP=10.118.83.11
set MASK=255.255.255.0
set GW=10.118.83.1
set DNS=10.118.8.28
set DNS2=160.118.8.29
netsh interface ip set address name="乙太網路" source=static %IP% %MASK% %GW%
netsh interface ip set dns "乙太網路" static %DNS%
netsh interface ip add dns "乙太網路" %DNS2%
echo 已將IP地址設為:%IP%,按任一鍵後繼續……
pause
















3.這例子以@echo off
@echo off
set IP=10.118.83.11
set MASK=255.255.255.0
set GW=10.118.83.1
set DNS=10.118.8.28
set DNS2=160.118.8.29
echo 
netsh interface ip set address name="乙太網路" source=static %IP% %MASK% %GW%
netsh interface ip set dns "乙太網路" static %DNS%
netsh interface ip add dns "乙太網路" %DNS2%
echo 已將IP地址設為:%IP%,按任一鍵後繼續……
pause
















結論:

   由上述三個例子,相信是可以看出差別在哪。
   在例子1中可以看出,在執行batch毎條指令時都會顯示出來,若不想讓他們顯示出來則可以如例子2一樣加上echo off”,而如果連echo off (echo處於關閉狀態)這行也不想顯示出來才在前面加上@”。













沒有留言:

張貼留言