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

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

各位大侠,真心求教

根目录下,文件名:
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))  
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 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 似乎一直出问题,能否解决?总是截不到最前面的四段?

TOP

意思就是 截取到 J038-2012-永久-0001

TOP

  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列不成功?有高手吗?

TOP

  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

评分人数

TOP

回复 5# terse


    超级谢谢啊,我还有一个问题,有点难度,能帮我解决了,就最最好了,我贴给你,我也是很困惑!

TOP

先谢谢你,我写已经解决,还有一个问题,我另外开帖说吧。

TOP

返回列表