Batch file MSDOS 6.22如何获取批处理目录?
我有一台旧的386电脑(没有windows),上面有MSDOS 6.22。因此,我无法使用任何基于cmd.exe(windows的一部分)构建的解决方案 我想将当前的bat脚本路径和名称传递给这个bat代码中的另一个程序 我尝试使用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程
%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中,并且我不是从另一个目录调用的。请删除“>”之前的空格,因为它存储在变量中。。。我的编辑被谢绝了