求批处理

guoqiangone 2014-07-31 12:02:05
你好,我想把各自子目录的图片移动到各自的根目录里面,而不是全部移动出来

比如:
c:\1\2.jpg
c:\2\3\4.jpg
c:\3\4\5\6.jpg
c:\4\5\6\7\8.jpg
……
统一移动成

c:\1\2.jpg
c:\2\4.jpg
c:\3\6.jpg
c:\4\8.jpg

请问这样可以吗?


如果有可能,移动在各自目录根目录的图片重命名为“各自目录名称.xxx.jpg“这样的名字吗?xxx从001开始到002,003,004这样递增。

就是:
c:\1\1.001.jpg 1.002.jpg 1.003.jpg ……
c:\2\2.001.jpg 2.002.jpg 2.003.jpg ……
c:\3\3.001.jpg 3.002.jpg 3.003.jpg ……
c:\4\4.001.jpg 4.002.jpg 4.003.jpg ……
...全文
216 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤雲独去闲 2014-08-01
  • 打赏
  • 举报
回复

@echo off
setlocal EnableDelayedExpansion
for /d %%i in (*) do (
set d=%%i
cd "!d!"
for /r %%j in (*.jpg) do (
set /a n+=1
set f=%%j
set di=%%~dj
move /y "!f!" "!di!\!d!\!d!.00!n!.jpg">nul
)
echo !di!\!d!----!n! files moved
set /a n=0
cd..
)
echo move complete...
pause
exit
放到根盘符下运行就行了,不过会扫描根盘符下所有文件夹,所以可以把move改成copy,这样不会破坏文件夹原来的结构。
孤雲独去闲 2014-08-01
  • 打赏
  • 举报
回复
当然,安全起见,move 可以把参数改成/-y,这样就不会被覆盖了
孤雲独去闲 2014-08-01
  • 打赏
  • 举报
回复
引用 2 楼 yangyangsnr 的回复:
Sorry 上面的批处理有些问题,如果不小心点了第二次,会因为文件重名造成覆盖丢失。 而且不知道为什么,for循环里产生的部分结果会成为元素被再处理一次,期待高手解答 下面写个改进点的,虽然解决了上面的问题,但是多循环移动了一次,抛砖引玉

@echo off
setlocal EnableDelayedExpansion
for /d %%i in (*) do (
set d=%%i
cd "!d!"
for /r %%j in (*.jpg) do (
set /a n+=1
set f=%%j
set di=%%~dj
move /y "!f!" "!di!\!d!\!d!.00!n!.j">nul
)
for /r %%k in (*.j) do (
set temp=%%k
set tem=!temp:~0,-2!
move /y "!temp!" "!tem!".jpg>nul
)
echo !di!\!d!----!n! files moved
set /a n=0
cd..
)
echo move complete...
pause
exit
loong0306 2014-07-31
  • 打赏
  • 举报
回复
额。。去C语言区问问也行。 在linux上应该很快的

4,168

社区成员

发帖
与我相关
我的任务
社区描述
Windows专区 一般软件使用
社区管理员
  • 一般软件使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧