3 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊
要執(zhí)行Jesse描述的操作,需要從Windows批處理文件中編寫:
for /f "delims=" %%a in ('ver') do @set foobar=%%a
但是,如果您習(xí)慣使用Unix類型的腳本,我建議在Windows系統(tǒng)上使用Cygwin。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
由于Windows批處理命令,因此需要特別小心:
for /f "delims=" %%a in ('command') do @set theValue=%%a
與Unix shell語句的語義不同:
theValue=`command`
考慮命令失敗導(dǎo)致錯(cuò)誤的情況。
在Unix Shell版本中,仍然會(huì)繼續(xù)分配“ theValue”,所有先前的值都將替換為空值。
在Windows批處理版本中,處理錯(cuò)誤的是“ for”命令,并且永遠(yuǎn)不會(huì)到達(dá)“ do”子句-因此,將保留“ theValue”的任何先前值。
為了在Windows批處理腳本中獲得更多類似Unix的語義,必須確保進(jìn)行分配:
set theValue=
for /f "delims=" %%a in ('command') do @set theValue=%%a
將Unix腳本轉(zhuǎn)換為Windows批處理時(shí)未能清除變量的值可能是導(dǎo)致細(xì)微錯(cuò)誤的原因。

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
當(dāng)我在批處理文件中需要數(shù)據(jù)庫查詢結(jié)果時(shí),這是我的處理方法:
sqlplus -S schema/schema@db @query.sql> __query.tmp
set /p result=<__query.tmp
del __query.tmp
密鑰在第2行中:“ set / p”通過“ <”重定向運(yùn)算符將“ result”的值設(shè)置為“ __query.tmp”中第一行的值(僅)。
- 3 回答
- 0 關(guān)注
- 1268 瀏覽
添加回答
舉報(bào)