我当前正在扫描整个目录,将exe复制并在每个文件夹中运行它。该exe转换每个文件夹中的某些日志文件。但是,一半的目录不包含任何日志文件,移动到每个文件夹并运行不执行任何操作的exe文件似乎很浪费。某些文件夹名称的示例:
我基本上只需要将可执行文件复制到名称中不包含EVT的文件夹中。这些只包含目前对我来说并不重要的evtx文件。
这是我的批处理文件及其执行的摘要:
set back=%cd%
set current_dir=%cd%
setlocal EnableDelayedExpansion
for /d %%i in ("%current_dir%\*") do (
copy LogCsv.exe "%%i" >NULL
cd "%%i"
LogCsv.exe
)
cd %back%
我真的是第一次使用批处理文件,并且我一直在这里寻找答案,但是找不到针对此特定问题的解决方案。我该如何循环此目录,但不包括名称中包含“ EVT”字符串的所有文件夹?
感谢您抽出宝贵的时间来协助您!
答案 0 :(得分:2)
好吧,您可以使用findstr /v
从搜索结果中排除某些值。
@echo off
set back=%cd%
set current_dir=%cd%
for /f %%i in ('dir /b /ad %current_dir%\* ^| findstr /v EVT') do (
copy LogCsv.exe "%%i" >NUL
cd "%%i"
LogCsv.exe
cd %back%
)
还请注意,您需要通过管道传输到nul
而不是null