如何调用当前目录中上一级的batch file?
我正在使用folder1/folder2/file.bat
的batch file
父文件夹folder1
有一个batch file,我想通过file.bat
打开
我曾尝试使用:
start ..\..\code.bat
但是这会导致错误信息,因为找不到文件。
有任何想法吗?
你可以只是:
cd.. start Code.bat
这将从它自己的目录开始code.bat
我想解释一下如何使用一个例子,因为到目前为止所发布的答案只能用当前工作目录作为包含batch filefile.bat
的目录。
有一个目录结构如下:
- C:\
- 温度
- 文件夹1
- 文件夹2
- Example.bat
- Parent.bat
- 文件夹2
- 文件夹1
- 温度
当前的工作目录是用C:\ Temp执行Example.bat
"Folder 1\Folder 2\Example.bat"
或与
"C:\Temp\Folder 1\Folder 2\Example.bat"
batch fileParent.bat
包含例如:
echo %0 is active. pause
batch fileExample.bat
已经包含:
@echo off echo Calling Parent.bat ... rem How to run Parent.bat here? echo %0 is active. pause
当前工作目录与包含Example.bat
目录不同的目录在这种情况下真正可行的解决scheme如下所示。
用Parent.bat继续批处理
"%~dp0..\Parent.bat"
执行batch file时%0
引用参数0,batch file始终是batch file的父进程中指定的batch file的名称。
但是想要的是没有双引号的batch file的驱动器和path。 因此,expression式%~dp0
用于从参数0中获取C:\ Temp \ Folder 1 \ Folder 2 \ 。
在这个path上,string.. \ Parent.bat被附加,并且附加了整个新的文件名
C:\ Temp \ Folder 1 \ Folder 2 \ .. \ Parent.bat由于空格而被括在双引号中。
Parent.bat
处理完成后,没有返回到Example.bat
。
像子程序一样调用Parent.bat
call "%~dp0..\Parent.bat"
命令调用导致在同一命令进程(控制台窗口)中执行batch fileParent.bat
,并暂停Example.bat
的执行,直到完成Parent.bat
。
在完成Parent.bat
处理之后,批处理将在Example.bat
下一行继续。
例外:
Parent.bat
包含不带开关/B
命令exit
,因为这会导致命令行解释程序cmd.exe
立即退出,处理Example.bat
和Parent.bat
。
执行call /?
或者在命令提示窗口help call
命令调用的简短帮助。
启动Parent.bat作为并行进程
start "Parent Batch" "%~dp0..\Parent.bat"
除了可选标题之外,命令启动时没有任何参数,导致在单独的控制台窗口中由单独的命令进程执行batch fileParent.bat
,而不停止Example.bat
的执行。
因此,这两个batch file同时运行(或多或less)。
注意:
命令开始将双引号中的第一个string解释为标题。 因此,当启动batch file或应用程序或启动的batch file/应用程序的任何参数必须用双引号指定时,由于有一个或多个空格,所以有必要明确定义双引号中的标题。
执行start /?
或者help start
在命令提示符窗口中help start
以获得命令启动的简短帮助。
调用Parent.bat作为单独的过程
start "Parent Batch" /wait "%~dp0..\Parent.bat"
命令以可选参数/wait
开始,作为单独的进程(batch file或控制台应用程序的附加控制台窗口)执行已启动的batch file/应用程序,但会暂停执行当前batch file,直到启动的进程(Windows应用程序或在新的控制台窗口中执行的batch file/控制台应用程序)终止本身。
尝试使用这个:
start ../code.bat
..\
被用来上一层。 你的情况需要两个级别试试:
start ..\..\code.bat