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

[文件操作] 批处理如何根据文件名的最后一个字符将文件移动到不同文件夹?

[复制链接]
发表于 2014-9-18 23:14:39 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-12-25 13:50 编辑

根据文件名尾部的字母分文件夹
找到尾部为D的文件分文件夹
比如此图中的
10001A-10028  生成001文件夹  并剪切到001里面
10029D-10036  生成002文件夹  并剪切到002里面
10037D-10049  生成003文件夹  并剪切到003里面
10050D-10060  生成004文件夹  并剪切到004里面
10061D-10076  生成005文件夹  并剪切到005里面
10077D-10093  生成006文件夹  并剪切到006里面
10094D-10111  生成007文件夹  并剪切到007里面
并找到尾部位B和C的文件复制到A的文件夹里面
比如此图中的
10004B-10025C 生成A文件夹  并复制(是复制不是剪切)到A里面
这样文件夹有很多  需要一次性批处理
非常感谢

由于 我上传的图片太大  所以发到网盘
http://pan.baidu.com/s/1qWobkks
发表于 2014-9-18 23:18:55 | 显示全部楼层
请给几个具体的例子
 楼主| 发表于 2014-9-18 23:44:26 | 显示全部楼层
回复 2# DAIC

图片太大  我发到网盘了  麻烦您查看一下
发表于 2014-9-19 00:09:13 | 显示全部楼层
看不懂这有什么规律
 楼主| 发表于 2014-9-19 00:13:59 | 显示全部楼层
回复 4# CrLf
找到尾部为D的  就和前一个D之后的  分文件夹啊
 楼主| 发表于 2014-9-19 00:18:44 | 显示全部楼层
回复 4# CrLf
发表于 2014-9-19 13:23:22 | 显示全部楼层
不明白1111111
发表于 2014-9-19 15:10:38 | 显示全部楼层
本帖最后由 terse 于 2014-9-19 15:39 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=1001
  3. set f=!n:~-3!
  4. for /f "delims=" %%i in ('dir /b /a-d /on *.jpg') do (
  5.     set str=%%~ni
  6.     if /i "!str:~-1!" == "D" (
  7.        set /a n+=1
  8.        set f=!n:~-3!
  9.     ) else if /i "!str:~-1!" == "B" set f=A
  10.     md "!f!" 2>nul
  11.     if !f! == A (copy "%%i" "!f!") else move "%%i" "!f!"
  12.     if /i "!str:~-1!" == "C" set f=!n:~-3!
  13. )
  14. pause
复制代码
 楼主| 发表于 2014-9-19 20:37:24 | 显示全部楼层
本帖最后由 001011 于 2014-9-19 20:39 编辑

回复 8# terse

非常感谢  非常好用  就是复制后  B-C  丢在外面了  没有剪切到001里面去
再就是  能否加个路径呀  那样就可以一次性处理N个文件夹了
再次感谢
发表于 2014-9-19 21:14:04 | 显示全部楼层
回复 9# 001011
你顶楼的要求不是 ”10004B-10025C 生成A文件夹  并复制(是复制不是剪切)到A里面“ 吗?
剪切的话 11行改为   move "%%i" "!f!"
路径在DIR 哪里加试下
 楼主| 发表于 2014-9-19 23:51:51 | 显示全部楼层
回复 10# terse
我是说  全部按要求复制完成后  001里面的文件是完整的  而你写的代码 001里面没有B到C  而是放到了外面
发表于 2014-9-20 00:00:47 | 显示全部楼层
回复 11# 001011

11行  if !f! == A (copy "%%i" "!f!") else move "%%i" "!f!" 改为 下面试下
  1. if !f! == A ( copy "%%i" "!f!"&move "%%i" "001") else move "%%i" "!f!"
复制代码
 楼主| 发表于 2014-9-20 01:26:46 | 显示全部楼层
非常感谢   目的达到了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 00:20 , Processed in 0.017035 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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