2013-08-28 77 views
1

我有不同的生成日誌文件的進程。我想做出不同的動作,在哪裏日誌存儲在不同的路徑其實我這樣做,而是直接把上批中每個路徑:僅在找到某些特定文件的路徑中執行操作

md C:\source\Process1\%date:~6,4%_%date:~3,2%_%date:~0,2% 
CD /D C:\source\Process1\ 
for /f "skip=%1 eol=: delims=" %%F in ('dir /a:d /b /o:-d') do @rd /s /q "%%F" 
etc.. 

md C:\Process2\%date:~6,4%_%date:~3,2%_%date:~0,2% 
CD /D C:\Process2\ 
for /f "skip=%1 eol=: delims=" %%F in ('dir /a:d /b /o:-d') do @rd /s /q "%%F" 
etc.. 

它可以找到並獲得路徑,其中.log文件是否在其中並且在所有這些行動中進行了操作,而無需將路徑直接放在批次上? 我們正在創建越來越多的在不同路徑上生成日誌的進程,所以我需要將其自動化。

謝謝

+0

如何找到日誌? – Endoro

+0

更確切地說,獲取日誌所在的路徑。然後,在每條路徑上執行所有操作。 – Isdera

+0

什麼是**日誌**?我如何識別日誌? – Endoro

回答

0
@echo off 
setlocal EnableDelayedExpansion 
pushd C:\source\ 
set "LOG_PATH=;" 

for /f %%L in ('dir /b /s log_*.log 2^>^&1') do (
    (ECHO !LOG_PATH!| FIND ";""%%~dpL"";") >nul 2>&1 ||set "LOG_PATH=!LOG_PATH!"%%~dpL";" 
) 
popd 

echo ~~!LOG_PATH!~~ 
set "for=for /f "skip=%~1 eol=: delims="" 

for %%A in (!LOG_PATH!) do (
    md %%A%date:~6,4%_%date:~3,2%_%date:~0,2% 
    %for% %%F in ('dir /a:d /b /o:-d "%%A"') do @rd /s /q "%%F 
) 

endlocal 
+0

這使我每次創建進程時都會添加一個路徑生成日誌,並添加我已有的70個路徑(70個進程)。方法應該是查找目錄,比如'dir/b/s * .log',並將路徑傳遞給for。它應該是這樣的? – Isdera

+0

日誌文件名中是否有一些常見的東西?或者它們所在的根目錄? – npocmaka

+0

他們都在C:\源\(但在不同的子文件夾),所有與.log擴展名,並開始於log_(log_xxx.log) – Isdera

相關問題