【问题标题】:MSDOS 6.22 How to get batch directory?MSDOS 6.22 如何获取批处理目录?
【发布时间】:2020-04-19 23:08:42
【问题描述】:

我有一台装有 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

bat放在c:\batch目录的位置,名字是mybat.bat

我该怎么做?

【问题讨论】:

  • 您可能会发现this 很有帮助。
  • 请注意,不能保证当前执行的批处理文件位于当前目录中。
  • @RossRidge 你是对的,但是我的蝙蝠的位置不在路径中,我没有从另一个目录调用

标签: batch-file dos


【解决方案1】:

@Stephan 中的The solution 很好,但需要预定义的帮助文件。

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

@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 命令支持这些值。

【讨论】:

  • 请删除 ">" 之前的空格,因为它存储在变量中...我的编辑被拒绝了
【解决方案2】:
  • 将当前工作文件夹写入文件
  • 与另一个准备好的文件合并
  • 调用生成的批处理文件以获取变量
  • 照常使用

诀窍是只用一个命令创建一个辅助批处理文件: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 中使用代码创建没有换行符的行)

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

(来自我的old answer 的答案)

【讨论】:

    猜你喜欢
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 2012-07-07
    • 2018-09-22
    • 2020-09-06
    • 1970-01-01
    相关资源
    最近更新 更多