iT邦幫忙

0

DOS BAT (批次檔) 可以將檔案的內容指定給變數嗎?

aprilt 6 年前21165 瀏覽

請問在dos bat中, 有方法將檔案的內容傳給一個變數嗎?
ex. count.txt內容為1,如何指定給count變數?

因為我要寫一個bat file, 它會執行一個程式,執行完後會需要reboot, 所以我需要知道reboot後到底跑到第幾圈... 總共需要10個迴圈(過程中會重開機)...

還是有什麼方法可以確認開機後是跑到第幾圈? Thanks in advance.

看更多先前的討論...收起先前的討論...
逮丸逮丸 iT邦大師 1 級 ‧ 6 年前 檢舉
您的問題與:
dos command: 如何將一環境變數引入文字檔後儲存? 蠻類似,
只是每次重開機,要把該文字中的數字做 +1 的動作再寫入。

若上述的做法不理想的話,
可能要看 vbscript、WSH、PowerShell 的方案會更理想些。
aprilt iT邦新手 5 級 ‧ 6 年前 檢舉
很感謝你的回答... 不過看起來問題似乎還是沒辦法解決...
海綿寶寶 iT邦超人 1 級 ‧ 6 年前 檢舉
我的方法比較笨
用 FILE EXIST 來判斷第幾次執行
每次刪掉一個
10個都刪掉就收工

程式碼如下
(其中NOTEPAD要換成你那個會重開機的程式)
@ECHO OFF
IF EXIST 1.TIMES (
   DEL 1.TIMES
   NOTEPAD 
)
IF EXIST 2.TIMES (
   DEL 2.TIMES
   NOTEPAD
)
IF EXIST 3.TIMES (
   DEL 3.TIMES
   NOTEPAD
)
IF EXIST 4.TIMES (
   DEL 4.TIMES
   NOTEPAD
)
IF EXIST 5.TIMES (
   DEL 5.TIMES
   NOTEPAD
)
IF EXIST 6.TIMES (
   DEL 6.TIMES
   NOTEPAD
)
IF EXIST 7.TIMES (
   DEL 7.TIMES
   NOTEPAD
)
IF EXIST 8.TIMES (
   DEL 8.TIMES
   NOTEPAD
)
IF EXIST 9.TIMES (
   DEL 9.TIMES
   NOTEPAD
)
IF EXIST 10.TIMES (
   DEL 10.TIMES
   NOTEPAD
)


以下是產生10個檔案的程式碼
ECHO 1 > 1.TIMES
ECHO 2 > 2.TIMES
ECHO 3 > 3.TIMES
ECHO 4 > 4.TIMES
ECHO 5 > 5.TIMES
ECHO 6 > 6.TIMES
ECHO 7 > 7.TIMES
ECHO 8 > 8.TIMES
ECHO 9 > 9.TIMES
ECHO 10> 10.TIMES
aprilt iT邦新手 5 級 ‧ 6 年前 檢舉
感謝你的回答... 不過我在98做的dos開機碟中,用IF EXIST xxx (僅能下一個命令),且()要在同一行才行?? 好像也不能用ELSE指令...
海綿寶寶 iT邦超人 1 級 ‧ 6 年前 檢舉
主程式改成
@ECHO OFF
IF EXIST  1.TIMES CALL  STEP1.BAT
IF EXIST  2.TIMES CALL  STEP2.BAT
IF EXIST  3.TIMES CALL  STEP3.BAT
IF EXIST  4.TIMES CALL  STEP4.BAT
IF EXIST  5.TIMES CALL  STEP5.BAT
IF EXIST  6.TIMES CALL  STEP6.BAT
IF EXIST  7.TIMES CALL  STEP7.BAT
IF EXIST  8.TIMES CALL  STEP8.BAT
IF EXIST  9.TIMES CALL  STEP9.BAT
IF EXIST 10.TIMES CALL STEP10.BAT


STEP1.BAT到STEP10.BAT長的差不多

STEP1.BAT
DEL 1.TIMES
NOTEPAD


STEP2.BAT
DEL 2.TIMES
NOTEPAD


作業系統是Windows 98?
還有什麼環境限制嗎?
aprilt iT邦新手 5 級 ‧ 6 年前 檢舉
作業系統是DOS (用win98所做的開機碟)... ver: Windows 98 [Version 4.10.2222]
小成 iT邦高手 10 級 ‧ 6 年前 檢舉
BAT 批次檔內容
for /F "eol=; delims= " %%i in (count.txt) do set a=%%i & set /A b=%%i+1               
echo[%b%>count.txt                                                                   

不過我這邊沒有98可以測能不能這樣玩...

2 個回答

2
LKK
iT邦大師 9 級 ‧ 6 年前
最佳解答

main.bat

<pre class="c" name="code">
call count.bat
if %count%==2 goto step2
if %count%==3 goto step3
if %count%==4 goto step4
.
.
.

:step1
echo "set count=2" > count.bat
goto end

:step2
echo "set count=3" > count.bat
goto end
.
.
.
.
:end

程式碼未測試除錯

aprilt iT邦新手 5 級 ‧ 6 年前 檢舉

感謝你提供的方法... 稍微修改一下應該沒問題... Many thanks.

6
shunyuan
iT邦研究生 1 級 ‧ 6 年前

通常我們會寫一個小程式,讀取檔案資料,然後設定給環境變數。

在 DOS 的批次檔,就可以讀取這個變數。

當然變數可以不只一個以上,只要環境變數容納的下。

其實在 Linux 上也是這樣子做。

如果有需要,我可以提供 C 的程式範例,不過不知道你的 DOS 是哪一版的。

如果是 DOS 7.0 以前,可能還要想辦法,找到 Turbo C

aprilt iT邦新手 5 級 ‧ 6 年前 檢舉

你好, 我是用98做的dos開機檔... 能提供你的方法嗎? Thanks a lot.

shunyuan iT邦研究生 1 級 ‧ 6 年前 檢舉

我要發表回答

立即登入回答