Board logo

主題: [討論] [求助][已解決]讀取文字檔儲存至 Batch 批次檔的環境變數 [打印本頁]

發表人: hartmann109    時間: 2007-11-13 12:47 PM     主題: [求助][已解決]讀取文字檔儲存至 Batch 批次檔的環境變數

最近在學BAT檔的撰寫法,有些問題想問問…

如果我創建了一個純文字文件 123.txt
想在批次檔中自動讀取它的內容,並且設為環境變數
應該如何撰寫

EX: 123.txt 內容為 C:\Games\
而我想把環境變數 %gamepath% 設成123.txt的內容~這樣

有人能教我一下嗎?

[hartmann109 在  2007-11-14 04:34 PM 作了最後編輯]
發表人: join    時間: 2007-11-13 03:36 PM

記得是這樣子寫
ex : game.bat
-----------開始----------
@echo off
set path = c:\games
@echo on
------------結束---------
發表人: wugen    時間: 2007-11-13 03:48 PM

只要

set gamepath = c:\games\


PATH 是系統環境變數..
發表人: badcat    時間: 2007-11-13 05:11 PM

上面兩個例子都不對!

樓主的意思是:

123.txt 內容為 C:\Games\

類似將 set gamepath = c:\games\

但 C:\Games\ 字串得從 123.txt 取出,把 123.txt 的內容 "C:\Games\" 設定成環境變數 %gamepath% 的數值,而不是像上面的命令直接設定。

一般 Batch 批次檔內沒有這種命令,記得要用這種方法,得另外找「命令列工具」程式。
得找「從檔案中設定環境變數」的程式,大概類似 像這樣的程式。(下面的隨便舉例,非真實例子)
Ex: GetFileEnvSet.exe /S: gamepath /F:"123.txt"

這樣各位客倌看的懂嗎?

[badcat 在  2007-11-13 07:55 PM 作了最後編輯]
發表人: hartmann109    時間: 2007-11-13 08:06 PM

badcat兄臺說的是
看來要用第三方程式輔助才可以了

因為123.txt裡的內容可能會改變(會機動調整)
所以遊戲的路徑也會改變
因此我才需要一個批次檔可以讓我藉由修改txt裡的路徑,再重新存成變數…
然後再套用其他程式(例如Y.A.S.U)這樣~

順便請問一下,badcat兄可以幫我找找這種程式嗎

[hartmann109 在  2007-11-13 08:08 PM 作了最後編輯]
發表人: icon    時間: 2007-11-13 10:33 PM

在windows中
欲使用環境變數
請設定windows的系統變數(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment內)
或該登入使用者名稱的使用者變數(HKEY_CURRENT_USER\Environment內)
因為批次檔所產生及設定修改的的環境境變數
其生命週期及影響範圍
只存在在該shell(command,cmd或現在windows自己稱為命令直譯器)結束前與其所呼叫的程式
另外
用批次檔套用劇本並不是大問題,配合輸出入符號即可

--
windows的環境變數
於控制台->系統->進階->環境變數中修改
欲簡化動作
用批次檔者請配合reg外部命令
用script者
請用wscript支援的script語言
如vbs...等
利用宣告registry物件進行registry的變更
使用第三方程式
在下孤陋寡聞,不知道有這方面的程式,不過寫一隻其實不困難,因為有api可以引用

[icon 在  2007-11-13 10:38 PM 作了最後編輯]
發表人: ROACH    時間: 2007-11-13 10:39 PM


引用:
hartmann109寫到:
最近在學BAT檔的撰寫法,有些問題想問問…

如果我創建了一個純文字檔案 123.txt
想在批次檔中自動讀取它的內容,並且設為環境變數
應該如何撰寫

EX: 123.txt 內容為 C:\Games\
而我想把環境變數 %gamepath% 設成123.txt的內容~這樣

有人能教我一下嗎?



參考這個網址的作法
http://support.microsoft.com/kb/66292/zh-tw

你可以這樣作
  1.建立一文字檔內容為 set gamepath =  
   這個文字檔檔名就設定a.txt好的
  2.建立一個批次檔如下~~檔名隨便
   
    @echo off
    copy a.txt+123.txt setgp.bat /y
    setgb.bat

[ROACH 在  2007-11-13 10:41 PM 作了最後編輯]
發表人: hartmann109    時間: 2007-11-13 11:06 PM

ROACH兄你提的文章我很早就看過,不過一直看不懂
現在你一講解俺就懂了,感謝啦...
發表人: Jonson    時間: 2007-11-13 11:27 PM



CODE:
[Copy to clipboard]
FOR /F "usebackq" %%i in ("123.txt") do set gamepath=%%i

發表人: badcat    時間: 2007-11-14 09:16 AM

ROACH 的方法,可算是一個取巧的方法,但是有效。(取的好!)
而 Jonson 的方法,是比較正統的做法,但要注意此 FOR 指令僅能用於 Windows 2000/XP 以後才能使用。(新型的內建指令 FOR)

若考慮該批次檔要給別人,喵喵 會使用 ROACH 的方法。(沒有作業系統版本的問題)
若考慮該批次檔要自用,喵喵 會使用 Jonson 的方法。(不需寫入硬碟效率較高)


對不起,壞喵 還來不及找,兩位大人就已經有解決方案了。(看來 貓 的批次檔功力老化了!笑!)
集眾人的力量解決問題的感覺還真好!

建議 hartmann109 可將此兩種方案編入主題文中,並在標題上寫上:「已解決」讀取文字檔儲存至 Batch 批次檔的環境變數。(這標題比較能一目暸然)
以供後人瞻仰。(參考!笑!)

[badcat 在  2007-11-14 09:32 AM 作了最後編輯]
發表人: hartmann109    時間: 2007-11-14 11:44 AM


引用:
badcat建議 hartmann109 可將此兩種方案編入主題文中,並在標題上寫上:「已解決」讀取文字檔儲存至 Batch 批次檔的環境變數。(這標題比較能一目暸然)
以供後人瞻仰。(參考!笑!)[badcat 在  2007-11-14 09:32 AM 作了最後編輯]


已經弄好了,給各位鮮花奉上~
發表人: 阿達猴    時間: 2007-11-14 02:15 PM

我可能會考慮用vb自己寫程式讀檔案...(亂寫= =我是程式新手...)
發表人: badcat    時間: 2007-11-14 02:37 PM

抱歉,喵喵沒寫清楚,讓您誤解了!

標題上寫上 (藍色字):[求助][已解決]讀取文字檔儲存至 Batch 批次檔的環境變數

這樣標題定義比較清楚,一眼就看出是有「關於 文字檔 匯入 批次檔 環境變數的問題」,
[求助][已解決]批次檔的寫法 這標題來的一目暸然。

第二個是:可將此兩種方案編入主題文中
方法一:主題文中直接列出「解法文章」:
這樣壇友就不需到下面一堆回應中去找解答,主題文中就有解答說明。(請附上解答「出處」,以尊重發文者。)

方法二:主題文中直接直接列出「解法連接」:
只列出「解法」的「回應」「連接」(Ex: 解法一:http://twed2k.org/viewthread.php?tid=197447&page=1#pid1551871 - by ROACH )
用「本文連接」列出 ROACH & Jonson 「正確解答」回應 的位置即可。比較偷懶,比較輕鬆。(笑!)

P.S. 以上僅是 喵喵 的建議,要怎麼修改主題文,是 hartmann109 您個人的權利。(您高興就好!)



引用:
阿達猴寫到:
我可能會考慮用vb自己寫程式讀檔案...(亂寫= =我是程式新手...)


當然!能用「程式」寫作,執行效率高,彈性佳。
但不是每一個人都會寫「程式」,且你還得找「編譯器」編譯程式等等...問題要解決。


喵喵 個貓 認為,能用「現有」批次檔的工具來做,會比用「程式」門檻來的低。(Ex: VB, C,...),且資源取得方便。(已經內建在作業系統中)

[badcat 在  2007-11-14 03:45 PM 作了最後編輯]




歡迎光臨 TWed2k (http://twed2k.org/) Powered by Discuz! 4.1.0