[20170425]變態的windows批處理2.txt

lfree發表於2017-04-25

[20170425]變態的windows批處理2.txt

--//正在寫一個批處理指令碼,我想在開始執行命令前加入時間。
--//直接輸入time不行的,於是我現在命令列測試:

D:\tools\linux\usr\local\wbin>echo | time
當前時間: 15:17:46.68
輸入新時間: ECHO 處於開啟狀態。
系統無法接受輸入的時間。
輸入新時間:

或者

D:\tools\linux\usr\local\wbin>prompt | time
當前時間: 15:19:34.95
輸入新時間:

--//再想辦法取第一行。
D:\tools\linux\usr\local\wbin>prompt | time  | head -1
head: write error: Invalid argument
head: write error
head: write error: Invalid argument
head: write error: Invalid argument
--//報錯!!  看了time命令幫助:

D:\tools\linux\usr\local\wbin>time /?
顯示或設定系統時間。

TIME [/T | time]

顯示當前時間設定和輸入新時間的提示,請鍵入
不帶引數的 TIME。要保留現有時間,請按 Enter。

如果命令擴充套件被啟用,TIME 命令會支援 /T 命令列開關;該命令列開關告訴
命令只輸出當前時間,但不提示輸入新時間。

D:\tools\linux\usr\local\wbin>prompt | time /T
15:21

D:\tools\linux\usr\local\wbin>prompt | time | grep "當前時間"
grep: writing output: Invalid argument

--//昏,不支援到秒,ms什麼設計命令列的。而且很明顯time不支援管道命令。想到unxutil裡面也有一個date命令。

D:\tools\linux\usr\local\wbin>D:\tools\linux\usr\local\wbin\date "+%T"
15:23:46

--OK,現在可以了。開始寫批處理指令碼:
R:\>cat a.bat
D:\tools\linux\usr\local\wbin\date "+%T"

--//執行a批處理命令:

R:\>a
R:\>D:\tools\linux\usr\local\wbin\date "+T"
T

--//昏,輸出T。丟掉了百分號。改成加2個百分號。

R:\>cat a.bat
D:\tools\linux\usr\local\wbin\date "+%%T"

R:\>a

R:\>D:\tools\linux\usr\local\wbin\date "+%T"
15:26:18

--//這樣就ok了。
--//我建立的指令碼比較特殊,需要先將指令碼輸出到一個批處理中,拼接以後再呼叫執行。於是修改如下:

R:\>cat a.bat
echo D:\tools\linux\usr\local\wbin\date "+%%T" > bb.bat
call bb.bat
pause

--//執行:

R:\>a
R:\>echo D:\tools\linux\usr\local\wbin\date "+%T"  1>bb.bat
R:\>call bb.bat
R:\>D:\tools\linux\usr\local\wbin\date "+T"
T
R:\>pause
請按任意鍵繼續. . .

---//再次輸出T,也就是要實現這樣的呼叫,我要使用4個百分號。

R:\>cat a.bat
echo D:\tools\linux\usr\local\wbin\date "+%%%%T" > bb.bat
call bb.bat
pause

R:\>a
R:\>echo D:\tools\linux\usr\local\wbin\date "+%%T"  1>bb.bat
R:\>call bb.bat
R:\>D:\tools\linux\usr\local\wbin\date "+%T"
15:31:31
R:\>pause
請按任意鍵繼續. . .

--//終於ok了,windows的批處理真不好寫。

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

相關文章