dos命令-for循环批处理移动文件

本文中的移动的文件到对应文件夹是基于此条博文的基础上

dos命令-嵌套for循环批处理用时间重命名文件_批处理for循环嵌套_weixin_45056141的博客-CSDN博客

本来分类移动文件是非常简单的,直接move 2023*.jpg 就行,但是文件量太大时(上万条),一次性移动电脑可能处理不过来,于是为了方便一点,而且可以间隔时间处理文件,让电脑休息一下,写了一个批处理。

任务目的:把含有时间前缀的文件移动到对应时间的文件夹

执行代码

@echo off
setlocal enabledelayedexpansion

set var=目的路径(直接复制文件所在的路径即可)
set /a count=0

for /f "skip=5 tokens=1,2* delims=_ " %%c in ('dir  /b *.jpg') do (
echo %%c_%%d_%%e
set name=!var!%%c-%%d
set file=%%c_%%d_%%e

if count == 200 (
timeout /t 2
set /a count=0
)
set /a count=count+1
echo !file! && move !file! !name!
)
pause

运行成功的截图:

 代码解析:

set var=D:\123\123\123\123 \------ 路径(目的路径)
set /a count=0   ------设置计数参数

for /f "tokens=1,2* delims=_ " %%c in ('dir  /b *.jpg') do ( ------for/f的参数解析,以前的文章有过介绍,也可自行百度 。tokens是要分割的段数,1为第一段,2为第二段,*为剩下的所有;delims后面跟着的是分隔符,如果需要分隔多个字符,空格要在最后面,不然报错;从分割后的字段赋值,从c字母开始,%%e为剩下的所有;dir  /b *.jpg显示所有图片
echo %%c_%%d_%%e  -----打印文件名
set name=!var!%%c-%%d   ------把剪切出来的字段和路径拼在一起,形成一个完整的路径,这里剪切出来的是年份和时间
set file=%%c_%%d_%%e   ------把分割后的文件名重新连接起来

if count == 200 (   ------进行计数判断
timeout /t 2   ------达到200后暂停2秒钟
set /a count=0   ------重置计数参数
)
set /a count=count+1
   ------技术参数+1
echo !file! && move !file! !name!   ------打印文件名并移动文件到对应路径

遇到的bug:

for忘记使用了skip=4,开始时忽略前4个行数,结果导致前面几条图片没有被移动,找了很多问题,还以为是dir /b的问题,结果是添加了skip,后面去掉了skip就完全正常了

注意!!!:这个dos命令里的move使用有错误严重的后果,
move移动文件时一旦路径错误,不存在该路径时,不会报错,只会继续移动到一个不存在的文件夹,后续是再也找不到这些文件,实验时慎重使用!!!

 、

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值