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

[文件操作] [已解决]BAT能否将根目录下的文件创建并移动到对应的子文件夹[附半成品代码]

[复制链接]
发表于 2013-12-12 22:57:07 | 显示全部楼层 |阅读模式
各位大侠,真心求教

根目录下,文件名:
J038-2007-10年-0001-0001.jpg
J038-2007-30年-0001-0001.jpg
J038-2012-永久-0001-0002.jpg
J038-2012-永久-0001-0003.jpg
J038-2012-永久-0001-0004.jpg
J038-2012-永久-0001-0005.jpg
J038-2012-永久-0001-0006.jpg
J038-2012-永久-0002-0001.jpg
J038-2012-永久-0002-0002.jpg
J038-2012-永久-0002-0003.jpg
J038-2012-永久-0002-0004.jpg
J038-2012-永久-0003-0001.jpg
J038-2012-永久-0003-0002.jpg
.........

非常多个文件

然后在根目录下,能否创建名为
J038-2007-10年-0001
J038-2007-30年-0001
J038-2012-永久-0001
J038-2012-永久-0002
J038-2012-永久-0003
J038-2012-永久-0004
J038-2012-永久-0005
...........
的文件夹,并将之前根目录下的文件复制一份到子目录下?

就是根据 delims

能否创建文件名命名的文件夹

实现效果为

根目录下

J038-2012-永久-0001  的文件夹 下有

J038-2012-永久-0001-0002.jpg
J038-2012-永久-0001-0003.jpg
J038-2012-永久-0001-0004.jpg
J038-2012-永久-0001-0005.jpg
J038-2012-永久-0001-0006.jpg

J038-2012-永久-0002  的文件夹 下有

J038-2012-永久-0002-0001.jpg
J038-2012-永久-0002-0002.jpg
J038-2012-永久-0002-0003.jpg
J038-2012-永久-0002-0004.jpg

.............

以此类推

能否实现,求教各位高手!!

我的思路是   把所有文件名的最后一个“-”的截断,写入到一个文本文件,然后用 FOR 语句 历遍这个whole.txt 文本,创建出文件夹,但是在根目录下创建文件夹不太会,是否有高手帮忙完成,谢谢各位达人。

  1. @echo off
  2. for %%i in (*.jpg) do (
  3. for /f "tokens=*" %%a in (whole.txt) do (
  4. echo %%a | findstr "%%i" && move %%i %%a))  
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2013-12-12 23:26:17 | 显示全部楼层
本帖最后由 playinthesky 于 2013-12-12 23:31 编辑

我想到方法了,但是

  1. @echo off
  2. for %%a in (*.jpg) do for /f "tokens=1-4 delims=-" %%b in ("%%a") do (
  3. if not exist %%b md %%b
  4. copy "%%a" %%b
  5. )
复制代码
delims 似乎一直出问题,能否解决?总是截不到最前面的四段?
 楼主| 发表于 2013-12-12 23:32:38 | 显示全部楼层
意思就是 截取到 J038-2012-永久-0001
 楼主| 发表于 2013-12-12 23:46:42 | 显示全部楼层

  1. @echo off
  2. for %%a in (*.jpg) do for /f "tokens=1-4 delims=-" %%b in ("%%a") do (
  3. if not exist %%b md %%b
  4. copy "%%a" %%b
  5. )
复制代码
为什么提取1到4列不成功?有高手吗?
发表于 2013-12-13 00:20:59 | 显示全部楼层
  1. @echo off
  2. for %%i in (*.jpg) do for /f "tokens=1-4 delims=-" %%a in ("%%i") do (
  3.     if not exist "%%a-%%b-%%c-%%d" md "%%a-%%b-%%c-%%d"
  4.     copy "%%i" "%%a-%%b-%%c-%%d"
  5. )
  6. pause
复制代码
这样也可以

  1. @echo off&setlocal enabledelayedexpansion
  2. set "ph=%~dp0"
  3. for /f "tokens=* delims=" %%i in ('dir /b /a-d *.jpg') do (
  4.     set "str=%%i"
  5.     for /f "delims=" %%j in ("!str:-=\!") do (
  6.         set "str=%%~dpj"
  7.         set "str=!str:~,-1!"
  8.         set "str=!str:%ph%=!
  9.         md "%ph%!str:\=-!" 2>nul
  10.         if not exist "%ph%!str:\=-!\%%~nxi" copy "%%i" "%ph%!str:\=-!\!str:\=-!*.*"
  11.     )
  12. )
  13. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2013-12-13 00:42:16 | 显示全部楼层
回复 5# terse


    超级谢谢啊,我还有一个问题,有点难度,能帮我解决了,就最最好了,我贴给你,我也是很困惑!
 楼主| 发表于 2013-12-13 00:47:06 | 显示全部楼层
先谢谢你,我写已经解决,还有一个问题,我另外开帖说吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 19:47 , Processed in 0.038675 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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