标题: [文本处理] [已解决]批处理怎么按照关键词1到关键词2之间的文件名分类文件 [打印本页]
作者: 8532200 时间: 2021-4-28 13:21 标题: [已解决]批处理怎么按照关键词1到关键词2之间的文件名分类文件
目前已有最完美的BAT,支持子文件夹的- @echo off
- for %%i in (*分割*) do (
- for /f "tokens=1 delims=分割" %%a in ("%%i") do (
- if not exist "%%a" md "%%a"
- move "%%i" "%%a"
- )
- )
- pause
复制代码
这个bat是把所有文件名按照关键词分割来分类文件
比如我有两个文件,是
朱雀记分割1.txt
朱雀记分割2.txt
他就会把所有文件名放到一个朱雀记的文件夹里
现在遇到很大的问题。。。我有几千文件,全部是这种
001分类朱雀记分割1.txt
002分类朱雀记分割2.txt
001分类间客分割1.txt
002分类间客分割2.txt
求可以按照关键词来帮我把类似文件文件夹里。。。感谢感谢。
比如上面关键词是分类和分割,分别存放去朱雀记和间客的新建文件夹中
作者: qixiaobin0715 时间: 2021-4-28 16:10
回复 1# 8532200
你所谓的完美bat实际上是不完美的,能够分类文件是因为凑巧而已。比如用此代码去处理你现在提供的文件,就会建立001、002文件夹进行分类。
“delims=分割”后面的字符是按单个字符(”分“和”割')进行处理的,比如处理“001分类朱雀记分割1.txt”,会将文件名分为3部分:001,类朱雀记,1.txt;由于tokens=1,只会取第一部分“001”。最好的办法是将多于1个的所谓关键词替换为单字符,再进行分割处理。具体你现在的需求,可以用以下代码:- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
- set "str=%%i"
- set "str=!str:分类=:!"
- set "str=!str:分割=:!"
- for /f "tokens=2 delims=:" %%a in ("!str!") do (
- if not exist %%a md %%a
- move "%%i" "%%a"
- )
- )
- pause
复制代码
作者: 8532200 时间: 2021-4-28 16:14
回复 8532200
你所谓的完美bat实际上是不完美的,能够分类文件是因为凑巧而已。比如用此代码去处理你现在 ...
qixiaobin0715 发表于 2021-4-28 16:10
感谢回复。。其实那个我基本可以解决生活中百分之90以上的文件处理了。。。很少需要求到现在这个。。。只是偶尔有特别需要才需要用到这个,真的非常感谢你的回复
作者: qixiaobin0715 时间: 2021-4-29 05:31
本帖最后由 qixiaobin0715 于 2021-4-29 05:47 编辑
回复 3# 8532200
顶楼代码这样更好一些- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
- set "str=%%~ni"
- set "str=!str:分类=:!"
- for /f "tokens=2 delims=:" %%a in ("!str!") do (
- if not exist %%a md %%a
- move "%%i" "%%a"
- )
- )
- pause
复制代码
作者: qixiaobin0715 时间: 2021-4-29 05:34
如果想取前面的字符作为文件夹名tokens=1
取后面字符作为文件夹名tokens=2
作者: 8532200 时间: 2021-4-29 06:54
回复 8532200
顶楼代码这样更好一些
qixiaobin0715 发表于 2021-4-29 05:31
好的。非常感谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |