bat問題 - Windows

Ida avatar
By Ida
at 2009-10-16T21:47

Table of Contents

※ 引述《KiroKu ()》之銘言:
: 想弄個程式來處理程式結果:
: for %%a in (1 2) do (
: for %%c in (1 2 3 4) do (
: for /f "delims=" %%i in (result%%a-%%c.txt) do (
: set foo=%%i
: )
: echo %foo%--%%a--%%c>>zzzz.txt
: )
: )
: 可是zzzzz.txt裡出現的八行都是一樣的
: 另外抓最後一行有無更快的方式呢?
以下節錄自 set /? (奇怪我記得久遠之前我回過類似的文章啊?!還是不是在這裡回的?!)

===========================================================

最後,系統加入了延遲環境變數展開的支援。在預設狀態下,命令展開會啟
用這項支援,但是您可以在 CMD.EXE 用 /V 命令列參數來啟用/停用這個功
能。 請參看 CMD /?

延遲環境變數展開功能可用來避開展開功能限制。這項限制是發生在命令列
讀取過程,不是發生在執行過程。下面的範例說明了立即展開變數時會發生
的問題:

set VAR=before
if "%VAR%" == "before" (
set VAR=after;
if "%VAR%" == "after" @echo If you see this, it worked
)

這個例子永遠無法顯示 echo 訊息,因為在兩個 IF 敘述中的 %VAR% 會
在第一個 IF 敘述被讀入時便被展開。這是因為它是邏輯上包含了 IF 的內
部,而內部又是一個複合敘述。 所以在複合敘述內的 IF 實際上是用
"before" 和 "after" 來比較,而這永遠不會為真。同樣的,下面的例子也
不會作用:

set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%

這個例子中並不會建立目前目錄中所有檔案的清單,相反的只會將 LIST 變
數設為最後一個找到的檔案。同樣地,這是因為 %LIST% 只有在 FOR 敘述
第一次被讀入時才展開,此時 LIST 變數是空的。所以我們實際執行的 FOR
迴圈是:

for %i in (*) do set LIST= %i

這只是重複的將 LIST 設為最後找到的檔案。

延遲環境變數展開讓您可以用一個不同的字元 (驚嘆號) 在執行時展開
環境變數。如果啟用了延遲環境變數展開,上面的例子可以被改寫如下
而正常作用:

set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo If you see this, it worked
)

set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%

===========================================================

--
edit: 找到了...果然不是在這個版

是在這裡:
┌─────────────────────────────────────┐
│ 文章代碼(AID): #19fuask2 (Programming) [ptt.cc] Re: [問題] 請教DOS batch │
│ 文章網址: http://www.ptt.cc/bbs/Programming/M.1235716406.A.B82.html
│ 這一篇文章值 55 元 │
└─────────────────────────────────────┘

才半年前的文章難怪記憶猶新 XD

--
有人喜歡邊玩遊戲上逼
也有人喜歡邊聽歌打字
但是,我有個請求,
選字的時候請專心好嗎?
-- 改編自「古 火田 任三郎」之開場白

--
Tags: Windows

All Comments

Ingrid avatar
By Ingrid
at 2009-10-18T08:20
謝謝,不過還是不太會改...or

wow + win7 64bit

Rebecca avatar
By Rebecca
at 2009-10-16T20:27
※ 引述《kalgan (我愛聖騎)》之銘言: : 之前在xp 32bit環境下目前現有硬體雖然不是很順 : e6300 65nm : msi 3850 : p5ql-pro : ddr2-800 *2 : 在1680*1050 視窗化下玩 達拉然約2x-1x跳動 : raid 25 toc可以到達2x平均 ...

檔案分享

Yuri avatar
By Yuri
at 2009-10-16T19:29
關於先前我問的問題,衍生的問題想藉此再詢問一下,即: A電腦要遠端登入B電腦,或是欲登入B電腦上的分享資料匣,或者.. B電腦本地端自己要輸入帳號密碼時 遠端如果密碼輸入錯誤(好像只要一次),或是本地端的人密碼輸入太多次錯誤 B電腦此帳戶就會被鎖定 我猜測應該是我們公司的網管程式Agent改了Regist ...

XP重灌以後網路連線沒東西

Regina avatar
By Regina
at 2009-10-16T18:57
剛剛我重灌了XP 一切都很OK.. 唯讀網路很怪.. 我朋友(會電腦的)也交我弄 弄了好幾個小時還是沒辦法 我有網路驅動程式.該有的程式我都有 版本也都沒有錯 可是點控制台的網際網路裡面是空的 然後點桌面我的電腦右鍵-andgt;內容-andgt;硬體-andgt;裝置管理員 裡面有一個其他裝置是問號.其他 ...

升級WIN7 可是發票拿去報帳了

Andy avatar
By Andy
at 2009-10-16T16:04
我是暑假應用電腦展買的LENOVO筆電 代理商銷售人員跟我說我的WIN VISTA可以升級為WIN 7 我想說到WIN 7快要出了在看看大家的評價在考慮要不要升級 買完筆電 我的發票拿去報帳了 過了一陣子 也就是現在 想到可以升級的事情 就上網看了一下升級的辦法 問題來了 網站說需要有發票證明 ...

vista無法更新,發布日期10/13的六個更新檔

Dorothy avatar
By Dorothy
at 2009-10-16T15:15
請問為什麼我的vista無法更新下面這六個檔案 Microsoft Works8 安全性更新 (KB973636) 2007 Microsoft Office system 安全性更新 (KB972581) 2007 Microsoft Office system 安全性更新 (KB974234) Micr ...