Re: [問題] bat問題

看板Windows作者 ((short)(-15074))時間14年前 (2009/10/16 21:47), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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 -- 有人喜歡邊玩遊戲上逼; 也有人喜歡邊聽歌打字。 但是,我有個請求, 選字的時候請專心好嗎? -- 改編自「古 火田 任三郎」之開場白 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.28.92 ※ 編輯: LPH66 來自: 140.112.28.92 (10/17 02:00)

10/18 02:30, , 1F
謝謝,不過還是不太會改...or
10/18 02:30, 1F
文章代碼(AID): #1As7bYSi (Windows)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1As7bYSi (Windows)