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

[文件操作] [已解决]批处理怎样根据文件名中的字符串创建文件夹 并移动文件

[复制链接]
发表于 2021-10-12 14:20:52 | 显示全部楼层 |阅读模式
本帖最后由 hansenzhang 于 2021-10-12 16:00 编辑

提取文件名中倒数第一个"-"至倒数第三个"-"之间的字符串创建文件夹并移动文件至对应文件夹
例如: 文件名为     B00102#-C-20-5@折弯+压铆.DXF

创建  文件夹     -C-20-
移动  文件 B00102#-C-20-5@折弯+压铆.DXF  至 文件夹 -C-20-  内
发表于 2021-10-12 14:47:57 | 显示全部楼层
  1. powershell "dir *.dxf|foreach{if ($_.name -match '.*?(-.*?-.*?-).*'){md $matches[1];move $_.name $matches[1]}}"
复制代码
发表于 2021-10-12 14:53:50 | 显示全部楼层
回复 1# hansenzhang


测试之前请做好备份
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "tokens=1-4* delims=-" %%a in ('dir /b /a-d *.dxf') do (
  4.     if not exist "-%%b-%%c-" (
  5.         md "-%%b-%%c-"
  6.     )
  7.     move /y "%%a-%%b-%%c-%%d" "-%%b-%%c-"
  8. )
复制代码
 楼主| 发表于 2021-10-12 15:21:30 | 显示全部楼层
回复 2# idwma
大佬 处理结果有点问题   文件夹名称是  提取 倒数   第一个"-"至 倒数 第三个"-"之间的包含"-"
现在 文件  100035#-01-C-16-1.DXF  会分到 文件夹 -01-C- 里面
 楼主| 发表于 2021-10-12 15:21:50 | 显示全部楼层
回复 3# Batcher


大佬 处理结果有点问题   文件夹名称是  提取 倒数   第一个"-"至 倒数 第三个"-"之间的包含"-"
现在 文件  100035#-01-C-16-1.DXF  会分到 文件夹 -01-C- 里面
发表于 2021-10-12 15:28:35 | 显示全部楼层
回复 5# hansenzhang


    建议更新顶楼的例子,把不同情况的文件名多放几个
发表于 2021-10-12 15:31:01 | 显示全部楼层
可先判断一下字母段。
 楼主| 发表于 2021-10-12 15:34:37 | 显示全部楼层
回复 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


文件名大概这样的  置顶的那个不知道怎么修改
发表于 2021-10-12 15:39:28 | 显示全部楼层
回复 4# hansenzhang
  1. powershell "dir *.dxf|foreach{if ($_.name -match '.*(-.*?-.*?-)'){md $matches[1];move $_.name $matches[1]}}"
复制代码

评分

参与人数 1技术 +1 收起 理由
hansenzhang + 1 满足生产需要

查看全部评分

 楼主| 发表于 2021-10-12 15:54:28 | 显示全部楼层
回复 9# idwma


    感谢大佬已解决
 楼主| 发表于 2021-10-12 15:55:32 | 显示全部楼层
回复 6# Batcher


    感谢大佬帮忙 用了 idwma 的方案
发表于 2021-10-12 16:25:04 | 显示全部楼层
回复 8# hansenzhang


    顶楼左下角有个“编辑”,参考 http://bbs.bathome.net/thread-3473-1-1.html
发表于 2021-10-12 16:48:52 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-10-12 16:58 编辑

如果像8楼那么简单的文件名的话:
  1. @echo off
  2. for /l %%a in (1,1,99) do (
  3.     if exist *-C-%%a-*.DXF (
  4.         md -C-%%a-
  5.         move *-C-%%a-*.DXF -C-%%a-
  6.     )
  7. )
  8. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 20:02 , Processed in 0.023190 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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