[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 求助批处理关键词为名新建文件夹将搜索含关键词的文件依次存入各夹中

本帖最后由 youxianwei 于 2022-2-27 20:07 编辑

求助自定若干关键词以关键词为名新建文件夹将搜索含关键词的文件依次存入各夹中进行文件分类?(是扫描子孙玄曾的所有文件)
比如单关键词:“社区”,“物业”,“养老”。。。。。。
又比如多个组合关键词呢?:"规划 社区",“江西 物业”,“中国 地理”,“中国,历史,汉代”。。。。。(组合关键词之间用空格隔开是否不妥?那用逗号可以不?)
论坛里看到也有把若干自定义关键词按行存入txt的类似办法,能否有所启发?
参考一
@echo off
(for /f "usebackq tokens=*" %%a in ("关键字.txt") do move "*%%a*" "文件夹")>nul 2>nul
pause

参考二
@echo off
for /f "delims=" %%a in ('type list.txt') do (
        if not exist "%%a" md "%%a"
        for /f "delims=" %%b in ('dir /a-d/s/b^|findstr /i "%%a"') do if not "%%~dpb"=="%%~fa\" move /y "%%b" "%%a"
)

本帖最后由 youxianwei 于 2022-3-5 22:48 编辑

回复 8# went


    感谢感谢效果很好!【隐藏】操作耗时是否会随着已整理文件数量成千上万增多而变得越来越长呢?有没有瞬间【忽略】的办法呢?

TOP

回复 7# went


    for /r 有bug,使用dir替代
  1. @echo off & cd /d "%~dp0"
  2. setlocal enabledelayedexpansion
  3. REM 关键字列表
  4. set "key_list=规划 社区;江西 物业;中国 地理;中国 历史 汉代;"
  5. REM 添加隐藏属性
  6. set "key_list="%key_list:~0,-1%""
  7. for %%i in (%key_list:;=";"%) do if exist "%%~i" attrib +h /s /d "%%~i\*"
  8. REM 查找并移动
  9. for %%i in (%key_list:;=";"%) do (
  10. echo -----%%~i-----
  11. mkdir "%%~i" >nul 2>nul & set "filter="
  12. for %%a in (%%~i) do set "filter=*!filter!%%a*"
  13. for /f "delims=" %%a in ('dir /s /b /a-d-h "!filter!" 2^>nul') do (
  14. echo move "%%a" "%%~i\"
  15. move "%%a" "%%~i\" >nul 2>nul
  16. )
  17. )
  18. REM 去除隐藏属性
  19. for %%i in (%key_list:;=";"%) do if exist "%%~i" attrib -h /s /d "%%~i\*"
  20. pause&exit
复制代码

TOP

回复 6# youxianwei
  1. @echo off & cd /d "%~dp0"
  2. setlocal enabledelayedexpansion
  3. REM 关键字列表
  4. set "key_list=规划 社区;江西 物业;中国 地理;中国 历史 汉代;"
  5. REM 添加隐藏属性
  6. set "key_list="%key_list:~0,-1%""
  7. for %%i in (%key_list:;=";"%) do if exist "%%~i" attrib +h /s /d "%%~i\*"
  8. REM 查找并移动
  9. for %%i in (%key_list:;=";"%) do (
  10. echo -----%%~i-----
  11. mkdir "%%~i" >nul 2>nul & set "filter="
  12. for %%a in (%%~i) do set "filter=*!filter!%%a*"
  13. for /r %%a in ("!filter!") do (
  14. echo move "%%a" "%%~i\"
  15. move "%%a" "%%~i\" >nul 2>nul
  16. )
  17. )
  18. REM 去除隐藏属性
  19. for %%i in (%key_list:;=";"%) do if exist "%%~i" attrib -h /s /d "%%~i\*"
  20. pause&exit
复制代码

TOP

回复 4# went


    您好,已经整理过的文件非常多,再全部重新整理几遍的话费时费力,请问如何修改代码仅操作本级目录的未整理文件,而不操作已在文件夹以内的文件??谢谢

TOP

回复 4# went


    非常感谢,经测试成功!~

TOP

ansi编码,先测试,注意备份
  1. @echo off & cd /d "%~dp0"
  2. setlocal enabledelayedexpansion
  3. REM 关键字列表
  4. set "key_list=%key_list%规划 社区;"
  5. set "key_list=%key_list%江西 物业;"
  6. set "key_list=%key_list%中国 地理;"
  7. set "key_list=%key_list%中国 历史 汉代;"
  8. REM 查找
  9. set "key_list="%key_list:~0,-1%""
  10. for %%i in (%key_list:;=";"%) do (
  11. mkdir "%%~i" >nul 2>nul & set "filter="
  12. for %%a in (%%~i) do set "filter=*!filter!%%a*"
  13. for /r %%a in ("!filter!") do (
  14. echo move "%%a" "%%~i\"
  15. move "%%a" "%%~i\" >nul 2>nul
  16. )
  17. echo -----------
  18. )
  19. pause&exit
复制代码

TOP

回复 2# Batcher


    文件名【含】关键词,不是文件名【等于】关键词

TOP

回复 1# youxianwei


    文件名包含关键词还是文件内容?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表