我试图在目录中的文件中找到多个字符串,有数千个。我目前运行以下命令来搜索目录:
findstr /s "customerid" *
现在,这允许我找到包含该字符串的文件。我通常有两条信息,一个是客户ID和一个事件类型。一个客户最多可以有30个相关活动,例如“网站注册”。
我想要做的是,在目录中搜索客户ID和事件。然后将文件复制到新位置。这可能在批处理文件中吗?
答案 0 :(得分:3)
假设您要查找包含这两个字的所有文件(在此示例中为customer
和event
),您可以使用以下脚本:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem // Define constants here:
set "PATTERN=*.txt"
set "SOURCE=."
set "TARGET=D:\Data"
set "STRING1=customer"
set "STRING2=event"
pushd "%SOURCE%" && (
for /F "delims=" %%F in ('findstr /S /M /I /R /C:"\<%STRING1%\>" "%PATTERN%"') do (
for /F "delims=" %%E in ('findstr /M /I /R /C:"\<%STRING2%\>" "%%F"') do (
ECHO copy "%%E" "%TARGET%\%%~nxE"
)
)
popd
)
endlocal
exit /B
测试完脚本后,删除ECHO
命令前面的大写copy
!
答案 1 :(得分:2)
@echo off
setlocal enableextensions disabledelayedexpansion
set "sourceFolder=x:\somewhere"
set "targetFolder=y:\another\place"
set "customerID=00000000"
set "event=eeeeeeeeee"
for /f "delims=" %%a in ('
findstr /m /s /l /c:"%customerID%" "%sourceFolder%\*"
^| findstr /f:/ /m /l /c:"%event%"
') do (
ECHO copy "%%~fa" "%targetFolder%"
)
findstr
可以处理它。我们只需要两个实例
/f:/
)搜索的文件列表其余代码只是for /f
包装两个findstr
命令来处理第二个命令的输出并执行文件复制。
测试完脚本后,删除ECHO
命令前面的大写copy
!