标题: [文件操作] [已解决]批处理怎样根据文件名中的字符串创建文件夹 并移动文件 [打印本页]
作者: hansenzhang 时间: 2021-10-12 14:20 标题: [已解决]批处理怎样根据文件名中的字符串创建文件夹 并移动文件
本帖最后由 hansenzhang 于 2021-10-12 16:00 编辑
提取文件名中倒数第一个"-"至倒数第三个"-"之间的字符串创建文件夹并移动文件至对应文件夹
例如: 文件名为 B00102#-C-20-5@折弯+压铆.DXF
创建 文件夹 -C-20-
移动 文件 B00102#-C-20-5@折弯+压铆.DXF 至 文件夹 -C-20- 内
作者: idwma 时间: 2021-10-12 14:47
- powershell "dir *.dxf|foreach{if ($_.name -match '.*?(-.*?-.*?-).*'){md $matches[1];move $_.name $matches[1]}}"
复制代码
作者: Batcher 时间: 2021-10-12 14:53
回复 1# hansenzhang
测试之前请做好备份- @echo off
- cd /d "%~dp0"
- for /f "tokens=1-4* delims=-" %%a in ('dir /b /a-d *.dxf') do (
- if not exist "-%%b-%%c-" (
- md "-%%b-%%c-"
- )
- move /y "%%a-%%b-%%c-%%d" "-%%b-%%c-"
- )
复制代码
作者: hansenzhang 时间: 2021-10-12 15:21
回复 2# idwma
大佬 处理结果有点问题 文件夹名称是 提取 倒数 第一个"-"至 倒数 第三个"-"之间的包含"-"
现在 文件 100035#-01-C-16-1.DXF 会分到 文件夹 -01-C- 里面
作者: hansenzhang 时间: 2021-10-12 15:21
回复 3# Batcher
大佬 处理结果有点问题 文件夹名称是 提取 倒数 第一个"-"至 倒数 第三个"-"之间的包含"-"
现在 文件 100035#-01-C-16-1.DXF 会分到 文件夹 -01-C- 里面
作者: Batcher 时间: 2021-10-12 15:28
回复 5# hansenzhang
建议更新顶楼的例子,把不同情况的文件名多放几个
作者: qixiaobin0715 时间: 2021-10-12 15:31
可先判断一下字母段。
作者: hansenzhang 时间: 2021-10-12 15:34
回复 6# Batcher
1#-C-2-2 .DXF
10#-01-C-16-2 .DXF
10#-02-C-16-4 .DXF
10#-03-C-16-2 .DXF
10#-04-C-16-2 .DXF
11#-C-2-2 .DXF
12#-C-6-2 .DXF
13#-C-6-2 .DXF
14#-1-C-2-2 .DXF
14#-2-C-2-2 .DXF
2#-C-2-2 .DXF
3#-C-2-2 .DXF
4#-C-2-2 .DXF
5#-1-C-20-2 .DXF
5#-2-C-20-2 .DXF
6#-01-C-2-2 .DXF
6#-02-C-2-2 .DXF
6#-03-C-2-2 .DXF
6#-04-C-2-2 .DXF
6#-05-C-2-2 .DXF
7#-C-3-2 .DXF
8#-C-3-2 .DXF
9#-C-12-2 .DXF
文件名大概这样的 置顶的那个不知道怎么修改
作者: idwma 时间: 2021-10-12 15:39
回复 4# hansenzhang - powershell "dir *.dxf|foreach{if ($_.name -match '.*(-.*?-.*?-)'){md $matches[1];move $_.name $matches[1]}}"
复制代码
作者: hansenzhang 时间: 2021-10-12 15:54
回复 9# idwma
感谢大佬已解决
作者: hansenzhang 时间: 2021-10-12 15:55
回复 6# Batcher
感谢大佬帮忙 用了 idwma 的方案
作者: Batcher 时间: 2021-10-12 16:25
回复 8# hansenzhang
顶楼左下角有个“编辑”,参考 http://bbs.bathome.net/thread-3473-1-1.html
作者: qixiaobin0715 时间: 2021-10-12 16:48
本帖最后由 qixiaobin0715 于 2021-10-12 16:58 编辑
如果像8楼那么简单的文件名的话:- @echo off
- for /l %%a in (1,1,99) do (
- if exist *-C-%%a-*.DXF (
- md -C-%%a-
- move *-C-%%a-*.DXF -C-%%a-
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |