我已經寫了一個程序,返回鍵盤爲整數爲DOS 但我不知道如何得到它的輸出作爲變量。MS-DOS如何獲得作爲變量的命令輸出
注:我使用的是MS-DOS 7/Windows 98中,所以我不能使用FOR /F
或SET /P
有誰知道我能做到這一點?
我已經寫了一個程序,返回鍵盤爲整數爲DOS 但我不知道如何得到它的輸出作爲變量。MS-DOS如何獲得作爲變量的命令輸出
注:我使用的是MS-DOS 7/Windows 98中,所以我不能使用FOR /F
或SET /P
有誰知道我能做到這一點?
一些解決方案由Eric Pement here描述。但是,對於舊版本的cmd
,作者被迫使用外部工具。
例如,程序之類的工具STRINGS
由Douglas博陵,允許以下代碼:
echo Greetings! | STRINGS hi=ASK # puts "Greetings!" into %hi%
同由Richard布魯爾無二ASET
:
echo Greetings! | ASET hi=line # puts "Greetings!" into %hi%
一個替代純DOS解決方案需要將程序輸出重定向到該文件(在下面的示例中命名爲ANSWER.DAT
),然後使用sp特別準備的批處理文件。舉上述頁面:
[I] n的,我們需要能夠發出命令
set MYVAR={the contents of ANSWER.DAT go here}
批處理文件。這是一項艱鉅的任務,因爲MS-DOS不提供簡單的方法將"set MYVAR="
加入文件正常的DOS文本文件和批處理文件以兩個連續字節結束所有行:回車(Ctrl-M,十六進制0D或ASCII 13)和一個換行符(Ctrl-J,十六進制0A或ASCII 10)。在批處理文件中,您必須能夠在行的中間嵌入一個Ctrl-J。
許多文本編輯器有一種方法來做到這一點:通過Ctrl-P鍵隨後Ctrl鍵-J(DOS EDIT與Win95/98上,VDE),經由CTRL-Q前綴(EMACS, PFE),通過直接輸入ALT和數字鍵盤(QEdit,Multi-Edit)或通過指定的功能鍵(Boxer)。其他編輯器絕對不會支持此操作(記事本,Editpad,從MS-DOS 6.22或更早版本開始編輯; VIM只能在二進制模式下插入換行符,但不能在正常文本模式下插入)。
如果你能做到這一點,您的批處理文件可能是這樣的:
@echo off :: assume that the datafile exists already in ANSWER.DAT echo set myvar=^J | find "set" >PREFIX.DAT copy PREFIX.DAT+ANSWER.DAT VARIAB.BAT call VARIAB.BAT echo Success! The value of myvar is: [%myvar%]. :: erase temp files ... for %%f in (PREFIX.DAT ANSWER.DAT VARIAB.BAT) do del %%f >NUL
如果你看到^ J於上述3行,換行應該被嵌入在這一點上。您的編輯器可能會將其顯示爲帶有嵌入式圓圈的方框。