找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24248|回复: 4

[文本处理] 【已解决】批处理如何将含有关键词的txt文件移进以关键词为名的文件夹?

[复制链接]
发表于 2016-3-19 19:11:02 | 显示全部楼层 |阅读模式
本帖最后由 wzf1024 于 2016-3-20 01:33 编辑

很多txt,需要按关键词归类,但关键词不在文件名,是在txt内容里面,批处理如何按照输入的关键词搜索出含有该关键词的txt,移动到以输入的这个关键词为名的文件夹(若该文件夹不存在,则先建立再移进去,重名文件则在文件名后加序号区分)。这个对我来说很难,哪位大侠帮忙?
发表于 2016-3-19 19:33:38 | 显示全部楼层
回复 1# wzf1024
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p cho=请输入关键词:
  3. for %%a in (*.txt) do (
  4.         set /a i+=1 &set gk=0
  5.         type "%%a"|find /i "!cho!" && set gk=1
  6.         if !gk! equ 1 (
  7.                 if not exist "!cho!" (md "!cho!")
  8.                 move "%%a" "!cho!\%%~na-!i!.txt"
  9.         )
  10. )
  11. echo 执行完毕!
  12. pause>nul
复制代码
 楼主| 发表于 2016-3-19 23:06:00 | 显示全部楼层
回复 2# happy886rr


首先感谢大侠百忙中帮忙,但是操作后含有关键词的文件都被加了序号后缀,我说的是文件名相同的才加序号;还有就是要能够操作子文件夹。再次谢谢
发表于 2016-3-19 23:48:35 | 显示全部楼层
本帖最后由 happy886rr 于 2016-3-20 10:53 编辑

回复 3# wzf1024
增强版

  1. @echo off&setlocal enabledelayedexpansion
  2. set /p cho=请输入关键词:
  3. for /f "delims=" %%a in ('dir /a-d /b /s *.txt') do (
  4.         set gk=0
  5.         type "%%a"|find /i "!cho!" && set gk=1
  6.         if !gk! equ 1 (
  7.                 if not exist "!cho!" (md "!cho!")
  8.                 if exist "!cho!\%%~na.txt" (
  9.                         set k=1
  10.                         for /l %%i in (1 1 255) do (
  11.                                 if !k! equ 1 (
  12.                                         if not exist "!cho!\%%~na-%%i.txt" (
  13.                                                 set "SN=%%i"
  14.                                                 set k=0
  15.                                         )
  16.                                 )               
  17.                         )
  18.                         move "%%a" "!cho!\%%~na-!SN!.txt"
  19.                 ) else (
  20.                         move "%%a" "!cho!\%%~na.txt"
  21.                 )
  22.         )
  23. )
  24. echo 执行完毕!
  25. pause>nul
复制代码

评分

参与人数 1技术 +1 收起 理由
wzf1024 + 1 乐于助人,非常感谢

查看全部评分

发表于 2016-3-20 10:52:43 | 显示全部楼层
  1. @echo off
  2. set "keyWord=ABC"
  3. for /f "delims=" %%i in ('findstr /i /s /m /c:"%keyWord%" *.txt') do (
  4.     set "name=%%~ni"
  5.     setlocal enabledelayedexpansion
  6.     set "newName=!name!%%~xi"
  7.     md "D:\!keyWord!" 2>nul
  8.     for /l %%j in (1 1 100) do (
  9.         if exist "D:\!keyWord!\!newName!" set "newName=!name!_%%j%%~xi"
  10.     )
  11.     for %%j in ("D:\!keyWord!\!newName!") do (
  12.         endlocal & move "%%i" "%%~fj"
  13.     )
  14. )
  15. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 01:39 , Processed in 0.020735 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表