标题: [文件操作] 求助批处理关键词为名新建文件夹将搜索含关键词的文件依次存入各夹中 [打印本页]
作者: youxianwei 时间: 2022-2-26 10:09 标题: 求助批处理关键词为名新建文件夹将搜索含关键词的文件依次存入各夹中
本帖最后由 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"
)
作者: Batcher 时间: 2022-2-26 12:00
回复 1# youxianwei
文件名包含关键词还是文件内容?
作者: youxianwei 时间: 2022-2-26 21:43
回复 2# Batcher
文件名【含】关键词,不是文件名【等于】关键词
作者: went 时间: 2022-2-27 20:32
ansi编码,先测试,注意备份- @echo off & cd /d "%~dp0"
- setlocal enabledelayedexpansion
- REM 关键字列表
- set "key_list=%key_list%规划 社区;"
- set "key_list=%key_list%江西 物业;"
- set "key_list=%key_list%中国 地理;"
- set "key_list=%key_list%中国 历史 汉代;"
- REM 查找
- set "key_list="%key_list:~0,-1%""
- for %%i in (%key_list:;=";"%) do (
- mkdir "%%~i" >nul 2>nul & set "filter="
- for %%a in (%%~i) do set "filter=*!filter!%%a*"
- for /r %%a in ("!filter!") do (
- echo move "%%a" "%%~i\"
- move "%%a" "%%~i\" >nul 2>nul
- )
- echo -----------
- )
- pause&exit
复制代码
作者: youxianwei 时间: 2022-2-27 20:53
回复 4# went
非常感谢,经测试成功!~
作者: youxianwei 时间: 2022-3-3 13:23
回复 4# went
您好,已经整理过的文件非常多,再全部重新整理几遍的话费时费力,请问如何修改代码仅操作本级目录的未整理文件,而不操作已在文件夹以内的文件??谢谢
作者: went 时间: 2022-3-3 20:04
回复 6# youxianwei - @echo off & cd /d "%~dp0"
- setlocal enabledelayedexpansion
- REM 关键字列表
- set "key_list=规划 社区;江西 物业;中国 地理;中国 历史 汉代;"
- REM 添加隐藏属性
- set "key_list="%key_list:~0,-1%""
- for %%i in (%key_list:;=";"%) do if exist "%%~i" attrib +h /s /d "%%~i\*"
- REM 查找并移动
- for %%i in (%key_list:;=";"%) do (
- echo -----%%~i-----
- mkdir "%%~i" >nul 2>nul & set "filter="
- for %%a in (%%~i) do set "filter=*!filter!%%a*"
- for /r %%a in ("!filter!") do (
- echo move "%%a" "%%~i\"
- move "%%a" "%%~i\" >nul 2>nul
- )
- )
- REM 去除隐藏属性
- for %%i in (%key_list:;=";"%) do if exist "%%~i" attrib -h /s /d "%%~i\*"
- pause&exit
复制代码
作者: went 时间: 2022-3-3 20:26
回复 7# went
for /r 有bug,使用dir替代- @echo off & cd /d "%~dp0"
- setlocal enabledelayedexpansion
- REM 关键字列表
- set "key_list=规划 社区;江西 物业;中国 地理;中国 历史 汉代;"
- REM 添加隐藏属性
- set "key_list="%key_list:~0,-1%""
- for %%i in (%key_list:;=";"%) do if exist "%%~i" attrib +h /s /d "%%~i\*"
- REM 查找并移动
- for %%i in (%key_list:;=";"%) do (
- echo -----%%~i-----
- mkdir "%%~i" >nul 2>nul & set "filter="
- for %%a in (%%~i) do set "filter=*!filter!%%a*"
- for /f "delims=" %%a in ('dir /s /b /a-d-h "!filter!" 2^>nul') do (
- echo move "%%a" "%%~i\"
- move "%%a" "%%~i\" >nul 2>nul
- )
- )
- REM 去除隐藏属性
- for %%i in (%key_list:;=";"%) do if exist "%%~i" attrib -h /s /d "%%~i\*"
- pause&exit
复制代码
作者: youxianwei 时间: 2022-3-5 22:44
本帖最后由 youxianwei 于 2022-3-5 22:48 编辑
回复 8# went
感谢感谢效果很好!【隐藏】操作耗时是否会随着已整理文件数量成千上万增多而变得越来越长呢?有没有瞬间【忽略】的办法呢?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |