2013-08-28 38 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

相关问题