Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 仅在找到某些特定文件的路径中执行操作_File_Search_Batch File_Path_Dos - Fatal编程技术网

File 仅在找到某些特定文件的路径中执行操作

File 仅在找到某些特定文件的路径中执行操作,file,search,batch-file,path,dos,File,Search,Batch File,Path,Dos,我有不同的进程来生成日志文件。我想在存储日志的不同路径上执行不同的操作。我确实这样做了,但将每个路径直接放在批上: 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:~

我有不同的进程来生成日志文件。我想在存储日志的不同路径上执行不同的操作。我确实这样做了,但将每个路径直接放在批上:

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


谢谢

如何查找日志?更确切地说,获取日志所在的路径。然后,在每个路径上执行所有操作。日志是什么?如何识别日志?就像写入进程信息的text.txt文件一样,但扩展名为.log,例如process1.log。此条件使我每次创建进程生成日志时都添加一个路径,并添加我已经有70个进程的70个路径。方法应该是查找目录,比如dir/b/s*.log,并将路径传递给for。应该是这样的?日志文件名中有什么共同点吗?或者它们所在的根目录?它们都在C:\source\中,但在不同的子文件夹中,所有的扩展名都是.log,并且都以log\log\u xxx.log开头。这是一个很好的工作。但最后的更改%1不起作用,它将删除最旧的文件夹,跳过所需的最新文件夹数。另外,当我尝试创建带有日期的文件夹时,md C:\source\Process1\%date:~6,4%\%date:~3,2%\%date:~0,2%我使用md%LOG\u PATH%\%date:~6,4%\%date:~3,2%\%date:~0,2%,但两者都没有。我还测试了清除所有日志文件,效果很好。。你需要更多的帮助吗?如果您对skip参数化有问题,您可以在'dir/a:d/b/o:-d^ | more+中使用此设置skip=%1&for/f eol=:delims=%f!跳过do@rd/s/q%%F
@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