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

[文件操作] [已解决]批处理根据指定条件移动指定文件到对应文件夹中?

[复制链接]
发表于 2021-8-21 12:34:43 | 显示全部楼层 |阅读模式
123文件夹:
图片-2001_001_处理.txt
图片-2001_001_123.jpg
图片-1603_103_123.jpg

效果:
123文件夹:
图片-1603_103_123.jpg

移到“123”文件夹中“图片”子文件夹中内容:
图片-2001_001_处理.txt
图片-2001_001_123.jpg


问题已解决,谢谢!!
发表于 2021-8-21 12:59:00 | 显示全部楼层
图片-* 移动
图片-201603_103_123.jpg 不移动?
 楼主| 发表于 2021-8-21 13:08:57 | 显示全部楼层
本帖最后由 czvde 于 2021-8-21 16:52 编辑
图片-* 移动
图片-201603_103_123.jpg 不移动?
newswan 发表于 2021-8-21 12:59


已解决
发表于 2021-8-21 15:34:02 | 显示全部楼层
本帖最后由 newswan 于 2021-8-21 15:51 编辑

用两个for好一些

  1. for /f "tokens=1-3,* delims=-_" %%a in ('dir /b /a-d /on 123\*.*') do (
  2.     set/a _T_%%b_%%c_+=1
  3. )
  4. set _
  5. for /f "tokens=1-3,* delims=-_" %%a in ('dir /b /a-d /on 123\*.*') do (
  6.     if !_T_%%b_%%c_! gtr 1 (
  7.         if not exist 123\%%a mkdir 123\%%a
  8.         echo move 123\*-%%b_%%c_* 123\%%a\
  9.     )
  10. )

复制代码

评分

参与人数 1技术 +1 收起 理由
czvde + 1 感谢

查看全部评分

 楼主| 发表于 2021-8-21 16:04:12 | 显示全部楼层
本帖最后由 czvde 于 2021-8-21 16:50 编辑

回复 4# newswan


问题已解决
发表于 2021-8-21 16:05:07 | 显示全部楼层
回复 1# czvde
未测试
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2 delims=_" %%i in ('dir /b /a-d') do (
  4.     if defined %%i%%j (
  5.         if !m!==0 (
  6.             set /a n+=1
  7.             set str!n!=%%i_%%j
  8.         )
  9.         set m=1
  10.     ) else (
  11.         set m=0
  12.         set %%i%%j=true
  13.     )
  14. )
  15. for /l %%a in (1,1,!n!) do (
  16.     if not exist !str%%a:~,2! md !str%%a:~,2!
  17.     move "!str%%a!*.*" "!str%%a:~,2!"
  18. )
  19. dir /b /a-d>未移动文件的文件名说明.txt
  20. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
czvde + 1 感谢

查看全部评分

发表于 2021-8-21 16:10:06 | 显示全部楼层
回复 5# czvde


批处理放在123下面
发表于 2021-8-21 16:11:27 | 显示全部楼层
本帖最后由 newswan 于 2021-8-21 16:39 编辑

或者

  1. set _sour_=x:\123
  2. for /f "tokens=1-3,* delims=-_" %%a in ('dir /b /a-d /on %_sour_%\*.*') do (
  3.     set/a _T_%%b_%%c_+=1
  4. )
  5. set _
  6. for /f "tokens=1-3,* delims=-_" %%a in ('dir /b /a-d /on %_sour_%\*.*') do (
  7.     if !_T_%%b_%%c_! gtr 1 (
  8.         if not exist %_sour_%\%%a mkdir %_sour_%\%%a
  9.         echo move %_sour_%\*-%%b_%%c_* %_sour_%\%%a\
  10.     )
  11. )
复制代码
如果显示正确,把 echo move 的 echo 删除
 楼主| 发表于 2021-8-21 16:16:35 | 显示全部楼层
本帖最后由 czvde 于 2021-8-21 16:49 编辑

回复 8# newswan


已解决
发表于 2021-8-21 16:41:50 | 显示全部楼层
回复 9# czvde


上次 123 没改完,重新改了下,
如果正确,把 echo move 改成 move

文件前面加上
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
复制代码
发表于 2021-8-21 16:46:00 | 显示全部楼层

  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION

  3. set _sour_=123
  4. pushd %_sour_%
  5. for /f "tokens=1-3,* delims=-_" %%a in ('dir /b /a-d /on *.*') do (
  6.     set/a _T_%%b_%%c_+=1
  7. )
  8. set _
  9. for /f "tokens=1-3,* delims=-_" %%a in ('dir /b /a-d /on *.*') do (
  10.     if !_T_%%b_%%c_! gtr 1 (
  11.         if not exist %%a mkdir %%a
  12.         echo move *-%%b_%%c_* %%a\
  13.     )
  14. )
  15. popd
复制代码
如果正确,把 echo move 改成 move

评分

参与人数 1技术 +1 收起 理由
czvde + 1 技术

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 22:35 , Processed in 0.036342 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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