題 如何在管道輸出並保留當前工作目錄的同時從另一個批處理文件啟動批處理文件?


我有一個批處理文件作為計劃任務運行。為了舉例,我們可以調用它 alltasks.bat

它看起來如下:

@ECHO OFF
clearwebtemp.bat > clearwebtemp_out.txt
clearblahtemp.bat > clearblahtemp_out.txt
clearblihtemp.bat > clearblihtemp_out.txt

當沒有任何被調用的腳本更改目錄時,這樣可以正常工作,但如果這樣做,則主腳本無法完成剩餘的批處理調用或將輸出傳遞給文件。

我試過用了 start 命令,但可預測地管道輸出 start 命令而不是批處理文件本身的命令。

我還嘗試使用。保留當前的工作目錄 %CD% 腳本頂部的變量,然後在每次調用後切換回它,但是文件的輸出是在腳本切換到的目錄中完成的,這似乎沒有意義。

是否有明顯(或不那麼明顯)的方式來實現我想要實現的目標?


6
2017-08-22 16:25


起源


你是如何切換目錄的?你在chdir上使用/ d選項嗎? - Aditya Sehgal
我是。 chdir /d %OLDDIR% - Lusitanian
為什麼不簡單地允許腳本更改當前目錄並通過絕對路徑調用它們,可能包含起始目錄作為變量,即:“%mydir%\ foo.bat>%mydir%\ bar.txt”? - Marcks Thomas


答案:


這應該做你要求的:

cmd /c clearwebtemp.bat > clearwebtemp_out.txt
cmd /c clearblahtemp.bat > clearblahtemp_out.txt
cmd /c clearblihtemp.bat > clearblihtemp_out.txt

5
2017-08-24 04:24





另一種方案:

@ECHO OFF
pushd .
call clearwebtemp.bat > clearwebtemp_out.txt
popd
pushd .
call clearblahtemp.bat > clearblahtemp_out.txt
popd
pushd .
call clearblihtemp.bat > clearblihtemp_out.txt

要么

@ECHO OFF
call clearwebtemp.bat > clearwebtemp_out.txt
%~d0
cd %~p0
call clearblahtemp.bat > clearblahtemp_out.txt
%~d0
cd %~p0
call clearblihtemp.bat > clearblihtemp_out.txt

你可以忽略 %~d0 如果你的蝙蝠:)留在同一個驅動器上。


1
2017-10-15 22:51