[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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
非常好的论坛

请给几个具体的例子

TOP

回复 2# DAIC

图片太大  我发到网盘了  麻烦您查看一下
非常好的论坛

TOP

看不懂这有什么规律

TOP

回复 4# CrLf
找到尾部为D的  就和前一个D之后的  分文件夹啊
非常好的论坛

TOP

回复 4# CrLf
非常好的论坛

TOP

不明白1111111

TOP

本帖最后由 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
复制代码

TOP

本帖最后由 001011 于 2014-9-19 20:39 编辑

回复 8# terse

非常感谢  非常好用  就是复制后  B-C  丢在外面了  没有剪切到001里面去
再就是  能否加个路径呀  那样就可以一次性处理N个文件夹了
再次感谢
非常好的论坛

TOP

回复 9# 001011
你顶楼的要求不是 ”10004B-10025C 生成A文件夹  并复制(是复制不是剪切)到A里面“ 吗?
剪切的话 11行改为   move "%%i" "!f!"
路径在DIR 哪里加试下

TOP

回复 10# terse
我是说  全部按要求复制完成后  001里面的文件是完整的  而你写的代码 001里面没有B到C  而是放到了外面
非常好的论坛

TOP

回复 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!"
复制代码

TOP

非常感谢   目的达到了
非常好的论坛

TOP

返回列表