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

[文本处理] [已解决]批处理在当前目录下所有子文件夹里创建指定文件夹并把文件移动到相应文件夹里

[复制链接]
 楼主| 发表于 2015-2-7 18:38:43 | 显示全部楼层
回复 14# 慕夜蓝化


    移动到厂家的文件为1-1.JPG,2-2.JPG,3-3.JPG,4-1.JPG,5-1.JPG,其他的.JPG照片都移动到型号里面
发表于 2015-2-7 18:40:36 | 显示全部楼层

  1. @echo off&setlocal enabledelayedexpansion
  2. for /d %%i in (g:\h\*) do (
  3.     md "%%~fsi\厂家" "%%~fsi\型号" 2>nul
  4.     pushd "%%~fsi"
  5.     for %%a in (*.*) do (
  6.         set "str=%%a"&set "n=!str:~,1!"
  7.         if !n! leq 5 (
  8.             move "%%a" 厂家
  9.         ) else (
  10.             move "%%a" 型号
  11.         )      
  12.     )
  13.     popd
  14. )
  15. pause
复制代码
这样应该可以了。
 楼主| 发表于 2015-2-7 18:42:45 | 显示全部楼层
回复 15# 慕夜蓝化


    对啊!而且有的照片不是1-1.JPG的样式,而是1.JPG或是没有命名直接是.JPG,所以还得麻烦您帮我把这个条件添加进去!再次感谢~
发表于 2015-2-7 18:47:23 | 显示全部楼层
回复 18# SandraRusso

你试下17楼的行不行,我这里测试是通过的。
 楼主| 发表于 2015-2-7 18:54:56 | 显示全部楼层
回复 19# 慕夜蓝化

刚刚试了一下您给的代码,发现20-1,20-2等首位数字大于5的照片也被移动到厂家中去了,不过只有6-1照片在型号中,这个有点奇怪!
发表于 2015-2-7 18:59:32 | 显示全部楼层
回复 20# SandraRusso

这不奇怪,那不是首位数字了,那是前两位数字,我知道该怎么办了,你等下。
发表于 2015-2-7 19:23:07 | 显示全部楼层

  1. @echo off&setlocal enabledelayedexpansion
  2. for /d %%i in (g:\h\*) do (
  3.     md "%%~fsi\厂家" "%%~fsi\型号" 2>nul
  4.     pushd "%%~fsi"
  5.     for %%a in (*.*) do (
  6.         for /f "delims=-" %%b in ("%%~nxa") do (
  7.         if %%b leq 5 (
  8.             move "%%a" 厂家
  9.         ) else (
  10.             move "%%a" 型号
  11.         ))      
  12.     )
  13.     popd
  14. )
  15. pause
复制代码
你试下。
 楼主| 发表于 2015-2-7 19:30:29 | 显示全部楼层
回复 9# pcl_test


    您看要是图片有命名成1.JPG的也要移动到厂家中去,怎么修改代码呢?
发表于 2015-2-7 19:38:02 | 显示全部楼层
回复 15# SandraRusso
  1. @echo off
  2. set "filesdir=G:\H"
  3. for /f %%i in ('dir /ad /b "%filesdir%"') do (
  4. pushd "%filesdir%%%i"
  5. md "厂家" "型号"
  6. for /l %%a in (1,1,5) do (
  7. move %%a-*.* "厂家"
  8. move %%a.* "厂家"
  9. )
  10. move *.* "型号"
  11. popd
  12. )
  13. pause
复制代码
 楼主| 发表于 2015-2-7 19:44:21 | 显示全部楼层
回复 22# 慕夜蓝化


    哈哈!完美解决了~太感谢您了!我刚刚接触这个,是个菜鸟!还请您多多指教呀!不知道您可不可以帮我把您这段代码每句的含义备注解释下?另外希望能加下您的QQ,以后好好向您学习!
 楼主| 发表于 2015-2-7 19:52:58 | 显示全部楼层
回复 16# pcl_test

哈哈!真是高手呀!长见识了,另外还想问您下,如果要建立3个文件夹,然后把首位数字为1到5、6-10、11-之后的图片分别移动到3个文件夹内,您能在给做下指导吗?
发表于 2015-2-7 20:02:53 | 显示全部楼层
回复 17# SandraRusso
  1. @echo off
  2. set "filesdir=G:\H"
  3. for /f %%i in ('dir /ad /b "%filesdir%"') do (
  4. pushd "%filesdir%%%i"
  5. md "1-5" "6-10" "其他" 2>nul
  6. for /l %%a in (1,1,5) do (
  7. move %%a-*.* "1-5"
  8. move %%a.* "1-5"
  9. )
  10. for /l %%a in (6,1,10) do (
  11. move %%a-*.* "6-10"
  12. move %%a.* "6-10"
  13. )
  14. move *.* "其他"
  15. popd
  16. )
  17. pause
复制代码
 楼主| 发表于 2015-2-7 20:09:59 | 显示全部楼层
回复 18# pcl_test


    厉害呀!以后有类似的我就知道怎么变换的运用了! 这个2>nul语句的含义是啥意思啊?对了如果问题解决了,我应该怎么在主题上标注已解决呢?我刚找了半天没找到,还请您见谅!
发表于 2015-2-7 20:17:22 | 显示全部楼层
回复 19# SandraRusso

2>nul表示如果有错误不提示

你点击你问题1楼的“编辑”,直接在标题最前面输入[已解决],再点击“编辑帖子”即可
 楼主| 发表于 2015-2-7 20:19:17 | 显示全部楼层
回复 22# 慕夜蓝化


    真是高手呀!长见识了,另外还想问您下,如果要建立3个文件夹,然后把首位数字为1到5、6-10、11-之后的图片分别移动到3个文件夹内,您能在给做下指导吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 15:37 , Processed in 0.011528 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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