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 windows批处理文件在此行之后退出_Batch File_Window - Fatal编程技术网

Batch file windows批处理文件在此行之后退出

Batch file windows批处理文件在此行之后退出,batch-file,window,Batch File,Window,在windows 10上,我的批处理文件始终在此行之后退出,且没有任何信息: cd ..\DOC\API && make html & cd ..\..\BUILDALL 我盯着这一行看了很长时间,弄不明白为什么这一行后面的行不能执行。我还尝试了下面的一行,它显示了正确的目录 cd ..\DOC\API && make html & cd ..\..\BUILDALL & dir 正如Stephen指出的,“make”是一个批处理文件,

在windows 10上,我的批处理文件始终在此行之后退出,且没有任何信息:

cd ..\DOC\API && make html & cd ..\..\BUILDALL
我盯着这一行看了很长时间,弄不明白为什么这一行后面的行不能执行。我还尝试了下面的一行,它显示了正确的目录

cd ..\DOC\API && make html & cd ..\..\BUILDALL & dir

正如Stephen指出的,“make”是一个批处理文件,windows批处理文件在执行另一个批处理文件时终止,除非我们称之为批处理文件。所以这是正确的:

cd ..\DOC\API && call make html & cd ..\..\BUILDALL
和其他人一样,我一次又一次地检查目录,甚至用下面的一行来检查:

cd ..\DOC\API && make html & cd ..\..\BUILDALL & dir
即使最后一个
dir
输出正确,批处理文件仍会因上述原因终止
dir
无法正确显示,因为该行已全部解析


soembadhat从另一个角度进行了解释。

只有当目录成功更改为相邻的
DOC\API
目录(相对于当前目录)时,
Make
命令才会运行。与原始当前目录相邻的
BUILDALL
目录只有在完成
Make
命令后才会变为当前目录。目录列表将在
API
BUILDALL
中调用。如果没有目录列表,我的假设是,
makehtml
尚未完成,或者调用当前目录时,
DOC\API
与当前目录不相邻。如果显示
BUILDALL
目录列表,并且批处理文件退出,则脚本解析器已读取文件结束命令或标记。如果列出了
API
目录,则在原始当前目录旁边找不到您的
BUILDALL
目录。你有什么目录清单?接下来的那一行是什么?Windows 10没有本机的
MAKE
命令。那
MAKE
-是
MAKE.bat
?然后,您需要调用它才能返回到原始脚本。是的,确实如此。因为您在一行上完成了所有操作,这是作为一个整体进行解析的(在解析器不从
make.bat
返回之前)。(嘿,这是一个批处理文件——为什么首先要将多个命令压入一行,而不是保持其可读性、可维护性和易于故障排除?)