BATCH在子文件夹中找到字符串,然后移至新位置

时间:2018-08-14 17:30:03

标签: windows batch-file

我目前正在尝试在多个文件中查找字符串。...例如,一旦找到“ Apple”,我想将包含“ Apple”的文件移动到新文件夹中。

这是我当前的脚本:

findstr /s /m /l /c:"Apple" "C:\Users\User\Desktop\created\*.php"

这会找到所有包含“ Apple”一词的.php页面,但是当前列出了它们,我似乎无法将它们移到新位置。

我知道我需要删除“ / m”,因为这会打印文件名...

那我该如何将它们移到新文件夹中?

谢谢

2 个答案:

答案 0 :(得分:2)

绕个for循环:

for /f "delims=" %%a in ('findstr /smlc:"Apple" "C:\Users\User\Desktop\created\*.php"') do ECHO move "%%~fa" "Z:\New Location\"

注意:这是批处理文件语法。要直接在命令行上使用,请将每个%%替换为一个%

这只是回显move命令。故障排除之后,请卸下ECHO来武装move命令。

答案 1 :(得分:0)

另一种稍微不同的选择,(根据需要创建一个名为搜索词的新目录,将其移入该目录,并且仅在该文件中不存在该目录时才移动)

>
@Echo Off
Set "strPath=%UserProfile%\Desktop\created"
Set "strExtn=.php"
Set "strWord=Apple"
Set "strDest=%UserProfile%\Desktop\test"

CD /D "%strPath%" 2>Nul || Exit /B
For /F "Delims=" %%A In (
    'Findstr /MISC:"%strWord%" "%strPath%\*%strExtn%" 2^>Nul'
) Do RoboCopy "%%~dpA." "%strDest%\%strWord%" "%%~nxA" /MOV>Nul

只需根据需要修改变量2-5的值