Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file MSDOS 6.22如何获取批处理目录?_Batch File_Dos - Fatal编程技术网

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

Batch file MSDOS 6.22如何获取批处理目录?,batch-file,dos,Batch File,Dos,我有一台旧的386电脑(没有windows),上面有MSDOS 6.22。因此,我无法使用任何基于cmd.exe(windows的一部分)构建的解决方案 我想将当前的bat脚本路径和名称传递给这个bat代码中的另一个程序 我尝试使用%CD%,但它似乎只适用于cmd.exe 我尝试使用%0参数,但它只包含bat的名称,而不是包含完整路径的名称 @echo off set myPath=%cd% myprogram.exe %myPath%\%0 它不起作用。当我从bat程序的全名目录启动bat程

我有一台旧的386电脑(没有windows),上面有MSDOS 6.22。因此,我无法使用任何基于cmd.exe(windows的一部分)构建的解决方案

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

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

@echo off
set myPath=%cd%
myprogram.exe %myPath%\%0
它不起作用。当我从bat程序的全名目录启动bat程序时,传递的参数是
\mybat.bat
。 在解决变量后,我想这样做:

@echo off
myprogram C:\BATCH\MYBAT.BAT
bat放在
c:\batch
目录中,名称为
mybat.bat

如何执行此操作?

of很好,但需要预定义的帮助文件

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

@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
,因为这些值受提示符命令的支持。

  • 将当前工作文件夹写入文件
  • 与另一个准备好的文件合并
  • 调用生成的批处理文件以获取变量
  • 照常使用
诀窍是只使用一个命令创建辅助批处理文件:
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中创建没有换行代码的行)

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


(答案来源于我的某个目录)

您可能会发现有帮助。请注意,不能保证当前正在执行的批处理文件位于当前目录中。@RossRidge您是对的,但我的bat位置不在path中,并且我不是从另一个目录调用的。请删除“>”之前的空格,因为它存储在变量中。。。我的编辑被谢绝了