2014-05-09 81 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

相關問題