MS-DOS 如何获取命令的输出作为变量

2023-12-07

我编写了一个程序,该程序将 DOS 的键码作为整数返回 但我不知道如何将其输出作为变量。

注意:我使用的是 MS-DOS 7 / Windows 98,所以无法使用FOR /F or SET /P

有谁知道我该怎么做?


Eric Pement 描述了一些解决方案here。但是,对于旧版本cmd作者被迫使用外部工具。

例如,诸如此类的编程工具STRINGS作者:Douglas Boling,允许使用以下代码:

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

同样适用于ASET作者:理查德·布劳尔:

echo Greetings! | ASET hi=line # puts "Greetings!" into %hi%

另一种纯 DOS 解决方案需要将程序输出重定向到文件(名为ANSWER.DAT在下面的示例中),然后使用专门准备的批处理文件。引用上述页面:

[I]在批处理文件中我们需要能够发出命令set MYVAR={the contents of ANSWER.DAT go here}。这是一项艰巨的任务,因为 MS-DOS 没有提供一种简单的方法来预先添加"set MYVAR="到文件 [...]

Normal DOS text files and batch files end all lines with two consecutive bytes: a carriage return (Ctrl-M, hex 0D, or ASCII 13) and a linefeed (Ctrl-J, hex 0A or ASCII 10). In the batch file, you must be able to embed a Ctrl-J in the middle of a line.

Many text editors have a way to do this: via a Ctrl-P followed by Ctrl-J (DOS EDIT with Win95/98, VDE), via a Ctrl-Q prefix (Emacs, PFE), via direct entry with ALT and the numeric keypad (QEdit, Multi-Edit), or via a designated function key (Boxer). Other editors absolutely will not support this (Notepad, Editpad, EDIT from MS-DOS 6.22 or earlier; VIM can insert a linefeed only in binary mode, but not in its normal text mode).

如果你能做到,你的批处理文件可能如下所示:

@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

在上面第 3 行看到 ^J 的地方,应该在该点嵌入换行符。您的编辑器可能会将其显示为带有嵌入圆圈的方框。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MS-DOS 如何获取命令的输出作为变量 的相关文章

随机推荐

  • 有没有一种惯用的方法来缓存 Spark 数据帧?

    我有一个大型镶木地板数据集 正在使用 Spark 读取 读取后 我会筛选行的子集 这些行在应用不同转换的许多函数中使用 以下与我想要完成的逻辑相似但不完全逻辑 df spark read parquet file special rows
  • 强制/保护 POST 参数

    我的标题可能含糊不清 所以请检查下面我的情况 我有一个网络应用程序来管理员工列表 该应用程序采用中心辐射模式设置 单击员工列表中的员工会重定向到一个新窗口 显示所选员工的个人详细信息以进行可能的更新 该应用程序使用 HTTPS 通过 GET
  • 如何使用 Oauth2 使 API Gateway 的身份验证/授权过程无状态?

    在我的设计中 我有一个API网关 spring cloud api gateway 授权服务器 Oauth2 和资源服务器 微服务 我还有一个 CAS 服务器 但现在为了简单起见可以忽略它 我只是想使用API 网关来重定向客户端请求 如果用
  • SQL 查找和替换字符串的一部分

    我试图在字符串中找到某些文本 catid 18 其中除此之外每个字符串都不同 我之前在下面使用过这个查询 但它似乎只有在您知道整个字符串的情况下才有效 update TABLE NAME set FIELD NAME replace FIE
  • Python:TIFFReadDirectory 警告:带有标签的未知字段

    problem 我可以使用以下命令加载图片Image kivy 中的模块 This这就是我如何安装 kivy 以便我可以查看 TIFF 文件 但现在每次加载 TIFF 图像时 我都会收到一个又一个弹出警告 从而中断程序 TIFFReadDi
  • MVC 3 ninject 自定义成员资格上下文处置错误

    我有一个自定义成员资格 它使用我的 CustomerService 首先使用 EF 代码 4 1 与数据库进行通信 我使用 ninject 将 CustomerService 注入到我的自定义会员资格类中 但是当我尝试验证时 我收到上下文处
  • 嵌套类与单独的类文件

    至少在java中 我的编译器不允许我将两个 或更多 单独的类放在一个类文件中 它迫使我在同一个包中创建多个文件 我明白这是为什么 我也同意这个原则 但是 我意识到我可以轻松地嵌套类并将整个程序 不包括导入的库 包含在单个文件中 我想这会被人
  • 转换为 Dalvik 格式失败 facebook/AccessToken$SerializationProxyV1

    这是我的日志 2013 02 09 19 48 50 Dex Loader Unable to execute dex Multiple dex files define Lcom facebook AccessToken Serializ
  • 是否可以将相同的 DLL 添加两次到 AppDomain 中,或者最好重新使用加载的 DLLC?

    我的应用程序在应用程序执行期间多次加载相同的 DLL AssemblyName assemblyName AssemblyName GetAssemblyName plugin FullPathToDLLFile loadedPlugin
  • 使用 Write-Host 时输出中出现不必要的空间

    当我使用Write Host在一个Foreach Object 我在输出中得到了不必要的空格 write host http contoso com personal ADUserName Output http contoso com p
  • 自定义多色进度条

    我的应用程序要求是自定义进度条 具有多色指示的自定义进度 例如 小于 30 的进度用绿色显示 小于 60 和大于 30 的进度用黄色显示 最后从 60 到 100 的进度用红色显示 我想要这样的进度条 http www android2fr
  • Cesium - 使用相机缩放多边形以在放大/缩小时匹配经纬度位置

    我正在努力解决相机功能 我认为 可以提供一种方法强制我的多边形粘在我房子的顶部缩小 放大和旋转 或相机移动 这个问题遵循较早的question问题已解决 现在我需要一点帮助来解决我的下一个问题 我试图遵循的示例代码位于黄金标准似乎已融入现有
  • 使用 create-react-app 的多个入口点

    我的页面包含 20 的 React 组件和 80 的普通 html 内容 有必要在页面的不同位置放置多个React组件 因此我需要在index html中使用多个入口点 我想使用create react app 但我不想使用redux 因为
  • Magento - 在管理中不可见/不可编辑的产品属性

    是否可以通过代码 或手动 创建通过管理编辑产品页面不可见 因此不可编辑 的产品属性 如何 该属性只需要在php模块中使用 保存 加载 对的 这是可能的 如果您在安装脚本中执行此操作 您应该设置 visible 为假 installer gt
  • 如何建立友谊关系模型

    我一直在试图弄清楚如何做到这一点 即使查看其他示例 我也无法弄清楚 所以也许我可以获得一些个性化的帮助 我有两张桌子users status and friendships In the users status表我有一个字段userid
  • 如何修复React中的map is not a function错误?

    我遇到错误 map is not a function进行 API 调用时 我不久前才开始学习 React 和 API 我尝试将状态更改为对象 但未定义 因为 我得到的地图不是一个函数 也许我缺少调用 API 的东西 这是下面的代码 fun
  • 在ABAP中找到两个数据集的差异?

    我有一组值 foo bar blue 我有一个看起来像这样的表 ID my col 1 foo 2 bar 我想要设置值减去所有可用的 my col 值 foo bar blue 减去 foo bar 结果应该是 蓝色 在ABAP中如何做到
  • Jade Templates - 动态调用 Mixin

    如何使用 json 中的字符串输入 Jade 模板来动态加载 mixin 下面 目标是twoColumn jade加载foo and bar mixins 两列 jade mixin twoColumns obj container flu
  • AngularJS -$compileProvider.preAssignBindingsEnabled 不是一个函数

    我在尝试执行以下操作时收到以下错误消息gulp serve在我的 AngularJS 10 6 1 版 应用程序上 Error injector modulerr Failed to instantiate module myAppName
  • MS-DOS 如何获取命令的输出作为变量

    我编写了一个程序 该程序将 DOS 的键码作为整数返回 但我不知道如何将其输出作为变量 注意 我使用的是 MS DOS 7 Windows 98 所以无法使用FOR F or SET P 有谁知道我该怎么做 Eric Pement 描述了一