我目前正在尝试在多个文件中查找字符串......例如“Apple”,一旦找到,我想将包含“Apple”的文件移动到新文件夹。
这是我当前的脚本:
findstr /s /m /l /c:"Apple" "C:\Users\User\Desktop\created\*.php"
这找到了所有包含“Apple”一词的 .php 页面,但是它当前列出了它们,我似乎无法将它们移动到新位置。
我知道我需要删除“/m”,因为这会打印文件名...
那么我如何将它们移动到新文件夹中?
谢谢你
放置一个
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
命令。
一个稍微不同的替代方案,(根据需要创建一个名为搜索词的新目录,将其移入其中,并且仅当该文件不存在时才移动):
@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
。