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 文件所在的路径,并在所有路径中执行操作,而无需将路径直接放在批处理中?我们正在创建越来越多在​​不同路径上生成日志的进程,因此我需要将其自动化。

谢谢

4

1 回答 1

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
于 2013-08-28T08:19:44.933 回答