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

[文本处理] [已解决]批处理怎么按照关键词1到关键词2之间的文件名分类文件

目前已有最完美的BAT,支持子文件夹的
  1. @echo off
  2. for %%i in (*分割*) do (
  3.     for /f "tokens=1 delims=分割" %%a in ("%%i") do (
  4.         if not exist "%%a" md "%%a"
  5.         move "%%i" "%%a"
  6.     )
  7. )
  8. pause
复制代码
这个bat是把所有文件名按照关键词分割来分类文件
比如我有两个文件,是
朱雀记分割1.txt
朱雀记分割2.txt

他就会把所有文件名放到一个朱雀记的文件夹里



现在遇到很大的问题。。。我有几千文件,全部是这种

001分类朱雀记分割1.txt
002分类朱雀记分割2.txt



001分类间客分割1.txt
002分类间客分割2.txt

求可以按照关键词来帮我把类似文件文件夹里。。。感谢感谢。

比如上面关键词是分类和分割,分别存放去朱雀记和间客的新建文件夹中

回复  8532200
顶楼代码这样更好一些
qixiaobin0715 发表于 2021-4-29 05:31



    好的。非常感谢

TOP

如果想取前面的字符作为文件夹名tokens=1
取后面字符作为文件夹名tokens=2

TOP

本帖最后由 qixiaobin0715 于 2021-4-29 05:47 编辑

回复 3# 8532200
顶楼代码这样更好一些
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  4.     set "str=%%~ni"
  5.     set "str=!str:分类=:!"
  6.     for /f "tokens=2 delims=:" %%a in ("!str!") do (
  7.         if not exist %%a md %%a
  8.         move "%%i" "%%a"
  9.     )
  10. )
  11. pause
复制代码

TOP

回复  8532200
你所谓的完美bat实际上是不完美的,能够分类文件是因为凑巧而已。比如用此代码去处理你现在 ...
qixiaobin0715 发表于 2021-4-28 16:10



    感谢回复。。其实那个我基本可以解决生活中百分之90以上的文件处理了。。。很少需要求到现在这个。。。只是偶尔有特别需要才需要用到这个,真的非常感谢你的回复

TOP

回复 1# 8532200
你所谓的完美bat实际上是不完美的,能够分类文件是因为凑巧而已。比如用此代码去处理你现在提供的文件,就会建立001、002文件夹进行分类。
“delims=分割”后面的字符是按单个字符(”分“和”割')进行处理的,比如处理“001分类朱雀记分割1.txt”,会将文件名分为3部分:001,类朱雀记,1.txt;由于tokens=1,只会取第一部分“001”。最好的办法是将多于1个的所谓关键词替换为单字符,再进行分割处理。具体你现在的需求,可以用以下代码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  4.     set "str=%%i"
  5.     set "str=!str:分类=:!"
  6.     set "str=!str:分割=:!"
  7.     for /f "tokens=2 delims=:" %%a in ("!str!") do (
  8.         if not exist %%a md %%a
  9.         move "%%i" "%%a"
  10.     )
  11. )
  12. pause
复制代码
1

评分人数

TOP

返回列表