2014-05-09 239 views
1

我有一个问题,就是我可以自动关闭从另一批处理文件启动的批处理文件。批处理 - 如何关闭从另一个批处理文件启动的批处理文件

我的第一个批处理文件看起来是这样的:

@echo off 

:logs 
start C:\Users\Kenturrac\Desktop\copy.bat 

timeout 2 

goto logs 

所以你可以看到那里,我开始叫“copy.bat”另一个批处理文件,它看起来像这样:

::set arma path 
@set ARMAPATH=C:\Users\Administrator.WIN-B8I65OIU3DJ\Desktop\server\dayz_epoch_1 

::set log path 
@set LOGPATH=%ARMAPATH%\_LOGS 
@set MOVEORCOPY=copy 


:: Berechne Zeitstempel 
@set DAY=%DATE:~0,2% 
@set MONTH=%DATE:~3,2% 
@set YEAR=%DATE:~6,4% 
@set DATE=%YEAR%_%MONTH%_%DAY% 

@set HH=%TIME:~0,2% 
@IF "%TIME:~0,1%"==" " (
    set HH=0%TIME:~1,1% 
) 
@set MIN=%TIME:~3,2% 
@set SEC=%TIME:~6,2% 
@set TIME=%HH%%MIN% 

@IF NOT EXIST "%LOGPATH%\%DATE%_%TIME%\" (
    @set TEMPPATH=%DATE%_-_%TIME% 
) ELSE ( 
    @set TEMPPATH=%DATE%_-_%TIME%_%SEC% 
) 

@set TARGETPATH=%LOGPATH%\%TEMPPATH%\ 
@echo %TARGETPATH% 

Exit /b 

的问题在于它没有关闭为“copy.bat”启动的额外cmd窗口。 如果我使用“call”而不是“start”,它会弄乱“temppath”变量。

回答

0

假设第二批处理文件除了将环境变量设置为在新进程中启动批处理文件时将被丢弃的值之外,并且如果唯一不关注的是使用call而不是start,第一个过程中变量的值,在第二批中使用setlocal/endlocal指令来避免文件关闭和变量值干扰的问题。

+0

设置第二个批处理文件中的变量后,它继续复制文件。这里看起来并不重要,所以我跳过了这部分。但是,是的,setlocal/endlocal可以和call命令一起工作。 thx!你可以向我解释,为什么他没有关闭窗口,如果我使用start命令,因为我在第二个批处理文件的末尾使用了一个退出。 – user3621783

+0

尝试在开始处使用'@echo off'。 – foxidrive

相关问题