由于硬件太旧,我被迫运行控制绘图仪的 Windows 3.1。我使用的软件会创建一个 .bat 文件,其中包含以下行:
SPLOT.EXE/fmyfile.uc c:\myfile.plt
/f - 是一个开关,后面跟着转换后的输出文件的文件名。当文件名以数字 1 或 2 开头时,就会出现问题,然后 splot.exe 会尝试在 COM1 或 COM2 端口上输出,而不是创建 .uc 文件。由于我无法控制此 .bat 文件的创建方式,因此我唯一的解决方案是创建自己的 splot.exe 文件作为“加载器”,它将使用临时文件名执行原始 splot.exe(我将其重命名为 splotOrg.exe),然后将该临时文件重命名为正确的文件名。
因此我得到了以下 .bat 文件,后来我将其转换为 .exe高级 BAT 到 EXE 转换器:
@echo off
set str=%1
splotOrg.exe/ftempfile %2
ren tempfile %str:~2%
在 Windows 7 CMD 窗口中,此命令运行良好,但当我从真正的 MSDOS 4.0 中执行此命令时,它失败了。结果是%str:~2%从 %str% 变量中删去前 2 个字符的方法只适用于 Windows 98+ 扩展,或类似的东西。
不幸的是,我不懂任何低级编程语言,因此我只能使用简单的脚本语言。
有人可以建议我如何为 MSDOS 4.0 创建一个 .exe 文件来执行以下操作:
- 接受两个命令行参数,以空格分隔,我们将它们称为 $arg1 和 $arg2
- 执行:
splotOrg.exe/ftempfile $arg2
- 修剪/F来自 $arg1,所以/fmyfile.uc变得我的文件
- 改名临时文件转换为新的 $arg1 名称
答案1
你提到使用高级 BAT 到 EXE 转换器根据该网站,可执行文件“使用 Advanced BAT to EXE Converter 编译的可执行文件将在从 Windows98 到 Win8.1 64 位的所有 Windows 版本上运行。”它没有说 MS-DOS 4.0
可以使用 JP Software 的 4DOS 来解决。几乎任何版本都可以,但您也可以从4DOS 网站。
你也许可以避免这种情况:
ren *.* tempfile
否则,如果由于某种原因这不起作用,您应该能够采取长远措施,即使用 %@instr[] 删除不需要的字符(参见:JP 软件@Instr. 例如,%@instr[2,%@len[%2],%2]
)(或者,对于较旧的 4DOS 版本,%@substr[].)只要文件名中没有逗号(无论如何,MS-DOS 中的文件名中不常用/不支持逗号),您就应该没问题。
如果转换为 exe 的批处理文件不接受 4DOS 扩展,则只需运行它们:4DOS.Com/C mybatch.btm %1 %2
答案2
这可能有点牵强,但听起来字符串“ SPLOT.EXE/f
”可能被硬编码到绘图仪程序中。
如果您可以找到它并将其更改为类似“ MYBAT.EXE
”(末尾有两个空格)的内容,那么您可以将它指向如下所示的批处理文件:
@echo off
splotOrg.exe/ftempfile %2
ren tempfile %1