使用" start"进行环境更改以后在批处理文件中不可见

时间:2016-02-04 01:34:54

标签: batch-file

我有一个像这样的批次

@echo off

SET workspace="C:\yii2"

SET deploy_directory="C:\deployment"
SET source_file="C:\deployment\yii2"
SET destination_file="C:\deployment\deployment.zip"

cd "%source_file%"    

start /wait update composer

start /wait xcopy "%workspace%" "%source_file%" /s /h /f

cd "%deploy_directory%"

start /wait zipjs.bat zipItem -source "%source_file%" -destination "%destination_file%" -keep yes -force no

pause

bat文件可以在系统中的任何位置..所以我写这样的东西..目前这不起作用..当它运行并更改目录时,命令提示符弹出,它不处理下一个代码。 。是否有一种无中断地更改目录的静默方式,并将处理下一个命令?

主要目标是在目标路径中运行composer update。还要感谢解释这里发生的事情。

伪:

1。)转到工作区路径以更新作曲家 2.)用我的拉链球棒将工作区复制到某个路径 3.)更改到该目录 4.)运行拉链球棒

修改:添加了更多步骤

1 个答案:

答案 0 :(得分:1)

start启动一个新的命令窗口。您只想更改将运行update的命令窗口的工作目录。所以不要使用cd位的开头:

cd "%source_file%"    
start /wait update composer

使用start的一个原因是运行另一个批处理文件而不终止当前批处理文件。这是有效的,因为第二个批处理文件在新的命令shell(和窗口)中运行。通常,更好的选择是使用call,它在当前命令shell / window中运行第二个批处理文件但不终止当前shell。在您的情况下,由于update也是批处理文件,因此您可以使用call。所以你的脚本现在看起来像这样:

cd "%source_file%"    
call update composer