[20160222]windows批處理執行方式.txt

lfree發表於2016-02-22

[20160222]windows批處理執行方式.txt

--上個星期除錯windows批處理時遇到一些問題,做一個記錄。例子:

R:\>cat aa.bat
echo '1111'
pause
echo '2222'

--執行如下:
R:\>aa

R:\>echo '1111'
'1111'

R:\>pause
請按任意鍵繼續. . .


--在暫停的時候開啟另外的視窗編輯檔案,將2222 換成 3333.然後繼續執行,應該輸出什麼呢?我開始以為應該輸出2222.
--結果輸出的是3333.

R:\>echo '3333'
'3333'

--說明windows讀取批處理指令碼並沒有鎖定檔案,繼續讀取是透過偏移量讀取的。如果重複執行暫停時,修改前面的內容。修改1111為1111abc。
--很明顯執行如果在從偏移量讀取,將是錯誤的。執行如下:

R:\>aa
R:\>echo '1111'
'1111'

R:\>pause
請按任意鍵繼續. . .

R:\>e
'e' 不是內部或外部命令,也不是可執行的程式
或批處理檔案。

R:\>echo '3333'
'3333'

--這個在除錯windows批處理時要注意。

--繼續測試linux bash shell的情況:

$ cat aa.sh
#! /bin/bash
echo 1111
read -n  1 a
echo 2222

--執行暫停時修改2222為3333.
$ . aa.sh
1111

2222

--可以發現輸出的是依舊是2222.
--從這裡也看出兩者的不同,另外也說明windows批處理執行效率應該非常低下。
--也說明在除錯windows批處理指令碼要注意這個細節。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-1992255/,如需轉載,請註明出處,否則將追究法律責任。

相關文章