MSDOS 6.22 如何获取批处理目录?

MSDOS 6.22 How to get batch directory?

我有一台装有 MSDOS 6.22 的旧 386 计算机(没有 windows)。所以我不能使用任何基于 cmd.exe(windows 的一部分)

的解决方案

我想将当前的 bat 脚本路径和名称传递给此 bat 代码中的另一个程序。

我尝试使用 %CD% 但它看起来只适用于 cmd.exe 我尝试使用 %0 参数,但它只包含 bat 的名称而不是具有完整路径的名称

@echo off
set myPath=%cd%
myprogram.exe %myPath%\%0

没用。当我从它的全名目录启动 bat 程序时,传递的参数是 \mybat.bat。 变量解决后,我想要这样的东西:

@echo off
myprogram C:\BATCH\MYBAT.BAT

蝙蝠放在c:\batch目录下,名字是mybat.bat

我该怎么做?

of @Stephan 很好,但需要预定义的帮助程序文件。

但您也可以构建不需要任何预定义文件的解决方案。

@echo off

>temp1.bat echo @PROMPT SET _CD=$P
>temp2.bat command /c temp1.bat
call temp2.bat
del temp1.bat
del temp2.bat

echo currentDir=%_CD%

这可用于获取当前目录 $P、时间 $T 或日期 $D,因为 PROMPT[=22] 支持这些值=]命令。

  • 将当前工作文件夹写入文件
  • 与另一个准备好的文件合并
  • 调用生成的批处理文件以获取变量
  • 照常使用

诀窍是只用一个命令创建一个辅助批处理文件:set VARIABLE=somestring。我们通过将准备好的文件与 set VARIABLE= (重要: 没有 换行符)和另一个具有所需值的文件连接来实现。

@echo off
cd>temp.txt
copy init.txt+temp.txt setvar.bat
call setvar.bat
myprogram.exe "%VARIABLE%\mybat.bat"

要创建 init.txt(您只需执行一次(可重复使用的文件)):
在命令提示符下键入 COPY CON INIT.TXT
输入@SET VARIABLE=^Z(按Ctrl-Z生成^Z
遗憾的是,我不知道如何在 DOS 中使用代码创建没有换行符的行)

回答了一个有趣的解决方案来获取工作文件夹,但这个更通用;它适用于任何命令的输出(只要它只是一行)。
例如,将上面代码中的 cd>temp.txt 替换为 dir | find "bytes free" > temp.txt

(答案来自我的