腳本與批處理合二為一
更新時間:2012年05月16日 15:00:48 作者:
我們現(xiàn)在可以用JScript或VBScript來完成更復(fù)雜的工作,配合WMI,可以說是無所不能
批處理是我們管理計算機(jī)和進(jìn)行一些日常工作的好幫手,隨著Windows的升級,批處理能做的事情越來越多。但是還是有很多事情我們無法用批處理來完成。好在后來微軟在windows中加入了Windows Script Host,我們現(xiàn)在可以用JScript或VBScript來完成更復(fù)雜的工作,配合WMI,可以說是無所不能。WSH腳本用CScript.exe或WScript.exe來執(zhí)行,CScript.exe和WScript.exe有一些參數(shù),設(shè)置不同的參數(shù)對運(yùn)行的結(jié)果可能會有影響。我就曾發(fā)現(xiàn)有的腳本在使用缺省解釋器 (WScript.exe)和缺省參數(shù)不能得到我想要的結(jié)果。這樣當(dāng)我寫好一個腳本給別人使用時還得大費(fèi)口舌解釋該用CScript.exe還是 WScript.exe運(yùn)行,該配哪些參數(shù)。怎么解決這個問題呢?有一個方法: 另寫一個批處理文件,用適當(dāng)?shù)姆绞絹磉\(yùn)行這個腳本。不過這樣我就需要有兩個文件。能不能只用一個文件呢?能!將腳本和批處理融為一體!,不但可以解決上述問題,還可以同時利用批處理和WSH各自的優(yōu)勢。
思路是把批處理語句放在腳本的注釋里。JScript可以用/* */將一段文字作為注釋,所以我選擇了JScript。但/* */在批處理中是非法字符,怎么才能將其引入而沒有任何不需要的錯誤提示呢?
我們需要一個批處理和JScript都接受的且沒什么用的語句將/* 引入。JScript中有這樣的語句 @set @varname=value,而批處理中也有: set varname=value, 批處理中可以在語句前面加個@,表示此句不輸出。這就是我們需要的!至于*/很好辦,用 @rem */即可。
請看下面的代碼(擴(kuò)展名為bat),很簡單。
@set @this_call_started=1 /*
@echo off
@rem 允許CMD.EXE擴(kuò)展功能
@SETLOCAL ENABLEEXTENSIONS
@rem 允許CMD.EXE延遲展開環(huán)境變量
@SETLOCAL ENABLEDELAYEDEXPANSION
...
批處理語句寫在這里
...
@rem "%~dpnx0" 擴(kuò)展批處理文件自身的文件名為帶完整路徑的文件名
@rem %* 批處理文件自身的所有參數(shù)
@rem 重新將本文件作為腳本文件調(diào)用
@call CScript.EXE "%~dpnx0" //Nologo //e:jscript %*
...
批處理語句寫在這里
...
@goto end_this_call
@rem */
//Windows Script Start==================================================
...
腳本語句寫在這里
...
//Windows Script end=====================================================
/*
:end_this_call
...
批處理語句寫在這里
...
@set @this_call_started=
@rem */
思路是把批處理語句放在腳本的注釋里。JScript可以用/* */將一段文字作為注釋,所以我選擇了JScript。但/* */在批處理中是非法字符,怎么才能將其引入而沒有任何不需要的錯誤提示呢?
我們需要一個批處理和JScript都接受的且沒什么用的語句將/* 引入。JScript中有這樣的語句 @set @varname=value,而批處理中也有: set varname=value, 批處理中可以在語句前面加個@,表示此句不輸出。這就是我們需要的!至于*/很好辦,用 @rem */即可。
請看下面的代碼(擴(kuò)展名為bat),很簡單。
復(fù)制代碼 代碼如下:
@set @this_call_started=1 /*
@echo off
@rem 允許CMD.EXE擴(kuò)展功能
@SETLOCAL ENABLEEXTENSIONS
@rem 允許CMD.EXE延遲展開環(huán)境變量
@SETLOCAL ENABLEDELAYEDEXPANSION
...
批處理語句寫在這里
...
@rem "%~dpnx0" 擴(kuò)展批處理文件自身的文件名為帶完整路徑的文件名
@rem %* 批處理文件自身的所有參數(shù)
@rem 重新將本文件作為腳本文件調(diào)用
@call CScript.EXE "%~dpnx0" //Nologo //e:jscript %*
...
批處理語句寫在這里
...
@goto end_this_call
@rem */
//Windows Script Start==================================================
...
腳本語句寫在這里
...
//Windows Script end=====================================================
/*
:end_this_call
...
批處理語句寫在這里
...
@set @this_call_started=
@rem */
相關(guān)文章
Verilog關(guān)鍵詞的多分支語句實(shí)例詳解
這篇文章主要為大家介紹了Verilog關(guān)鍵詞的多分支語句實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04