2017-01-21 21 views
2

私はDOSコード のための整数としてキーコードを返すプログラムを書いたが、変数として出力する方法を知らない。MS-DOSコマンドの出力を変数として取得する方法

注:私は/ Windows 98のMS-DOS 7を使用していますので、私はFOR /Fを使用することはできませんかSET /P

は誰もが私はそれを行うことができる方法を知っていますか?

答えて

2

いくつかの解決策は、Eric Pement hereによって記述されています。しかし、古いバージョンのcmdでは、著者は外部ツールを使用することになりました。例えば

、ダグラスBolingによってSTRINGSのようなプログラムツールは、次のコードをすることができます:

echo Greetings! | STRINGS hi=ASK # puts "Greetings!" into %hi%

同じことがリチャード・ブロイヤーによって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、16進数0D、またはASCII 13)および改行(Ctrl-J、16進数0AまたはASCII 10)を入力します。バッチファイルでは、Ctrl-Jを行の途中に埋め込むことができる必要があります。

多くのテキストエディタは、これを行う方法があります:はCtrl-J(Win95の/ 98とDOS EDIT、VDE)が続くはCtrl-Pを経て、はCtrl-Qプレフィックス(Emacsの、経由PFE)、ALTとテンキーパッド(QEdit、Multi-Edit)、または指定されたファンクションキー(Boxer)を使用して直接入力します。他のエディタはこれを絶対にサポートしません(メモ帳、編集パッド、MS-DOS 6.22以前のバージョンからの編集、VIMは改行のみをバイナリモードで挿入できますが、通常のテキストモードでは挿入できません)。あなたがそれを行うことができる場合

、あなたのバッチファイルは次のようになります。あなたは上記の3行目に^ Jを参照してください

@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 

は、改行は、その時点で埋め込まれなければなりません。あなたのエディタは、円を埋め込んだ四角いボックスとして表示することがあります。

関連する問題