Code: Select all
@echo off
setlocal enabledelayedexpansion
set "folder=My Folder"
Call :GetDriveLetters letters
for %%a in (!letters!) do (
for /f "Tokens=*" %%b in ('dir /s /b /a-d "%%a\*.doc"') do (
Echo searching %%b
call :SearchReplaceWord "%%b" "apple" ret
if not !errorlevel! EQU 1 echo copy "%%b" "%~dp0%folder%" & echo.
)
)
exit /b
:GetDriveLetters <return>
setlocal enabledelayedexpansion
for /f "tokens=1" %%a in (
'wmic logicaldisk where drivetype^=3 get deviceid ^|findstr ":" ^|findstr /v /r "^^$"'
) do (set DL=!DL! %%a)
endlocal & set %~1=%DL% & exit /b
:SearchReplaceWord <WordDoc> <StringToSearch> <OptionalReplace> <Return>
setlocal
set vbs="%temp%\_.vbs"
if exist %vbs% del /f /q %vbs%
>%vbs% echo on error resume next
>>%vbs% echo Set objWord = CreateObject("Word.Application")
>>%vbs% echo objWord.visible = True
>>%vbs% echo Set objDoc = objWord.Documents.Open("%~1")
>>%vbs% echo Set objSelection = objWord.Selection
>>%vbs% echo objSelection.Find.Forward = True
>>%vbs% echo objSelection.Find.wrap = 1
>>%vbs% echo objSelection.Find.Text = "%~2"
if "%~4" NEQ "" (
>>%vbs% echo objSelection.Find.Replacement.Text = "%~3"
>>%vbs% echo Do While True
>>%vbs% echo objSelection.Find.Execute,,,,,,,,,,2
) ELSE (
>>%vbs% echo Do While True
>>%vbs% echo objSelection.Find.Execute
)
>>%vbs% echo If objSelection.Find.Found Then
>>%vbs% echo strWord = objSelection.Text
>>%vbs% echo Wscript.Echo strWord
>>%vbs% echo Else
>>%vbs% echo Exit Do
>>%vbs% echo End If
>>%vbs% echo Loop
>>%vbs% echo objDoc.close
>>%vbs% echo objWord.quit
>>%vbs% echo set objSelection = Nothing
>>%vbs% echo set objDoc = Nothing
>>%vbs% echo set objWord = Nothing
for /f "tokens=*" %%a in ('cscript //nologo %vbs%') do set result=%%a
if exist %vbs% del /f /q %vbs%
if "%result%" EQU "" (set a=1) else set a=0
endlocal & if "%~4" NEQ "" (set %~4=%result% & exit /b %a%
) else (
set %~3=%result% & exit /b %a%)
exit /b