标题: [文本处理] 【已解决】批处理如何将含有关键词的txt文件移进以关键词为名的文件夹? [打印本页]
作者: wzf1024 时间: 2016-3-19 19:11 标题: 【已解决】批处理如何将含有关键词的txt文件移进以关键词为名的文件夹?
本帖最后由 wzf1024 于 2016-3-20 01:33 编辑
很多txt,需要按关键词归类,但关键词不在文件名,是在txt内容里面,批处理如何按照输入的关键词搜索出含有该关键词的txt,移动到以输入的这个关键词为名的文件夹(若该文件夹不存在,则先建立再移进去,重名文件则在文件名后加序号区分)。这个对我来说很难,哪位大侠帮忙?
作者: happy886rr 时间: 2016-3-19 19:33
回复 1# wzf1024 - @echo off&setlocal enabledelayedexpansion
- set /p cho=请输入关键词:
- for %%a in (*.txt) do (
- set /a i+=1 &set gk=0
- type "%%a"|find /i "!cho!" && set gk=1
- if !gk! equ 1 (
- if not exist "!cho!" (md "!cho!")
- move "%%a" "!cho!\%%~na-!i!.txt"
- )
- )
- echo 执行完毕!
- pause>nul
复制代码
作者: wzf1024 时间: 2016-3-19 23:06
回复 2# happy886rr
首先感谢大侠百忙中帮忙,但是操作后含有关键词的文件都被加了序号后缀,我说的是文件名相同的才加序号;还有就是要能够操作子文件夹。再次谢谢
作者: happy886rr 时间: 2016-3-19 23:48
本帖最后由 happy886rr 于 2016-3-20 10:53 编辑
回复 3# wzf1024
增强版- @echo off&setlocal enabledelayedexpansion
- set /p cho=请输入关键词:
- for /f "delims=" %%a in ('dir /a-d /b /s *.txt') do (
- set gk=0
- type "%%a"|find /i "!cho!" && set gk=1
- if !gk! equ 1 (
- if not exist "!cho!" (md "!cho!")
- if exist "!cho!\%%~na.txt" (
- set k=1
- for /l %%i in (1 1 255) do (
- if !k! equ 1 (
- if not exist "!cho!\%%~na-%%i.txt" (
- set "SN=%%i"
- set k=0
- )
- )
- )
- move "%%a" "!cho!\%%~na-!SN!.txt"
- ) else (
- move "%%a" "!cho!\%%~na.txt"
- )
- )
- )
- echo 执行完毕!
- pause>nul
复制代码
作者: WHY 时间: 2016-3-20 10:52
- @echo off
- set "keyWord=ABC"
- for /f "delims=" %%i in ('findstr /i /s /m /c:"%keyWord%" *.txt') do (
- set "name=%%~ni"
- setlocal enabledelayedexpansion
- set "newName=!name!%%~xi"
- md "D:\!keyWord!" 2>nul
- for /l %%j in (1 1 100) do (
- if exist "D:\!keyWord!\!newName!" set "newName=!name!_%%j%%~xi"
- )
- for %%j in ("D:\!keyWord!\!newName!") do (
- endlocal & move "%%i" "%%~fj"
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |