批处理实例:利用上一级文件夹名对指定类型的文件重命名,并复制到一个目录下

目录

问题说明:

要点提示: 

代码:​​​​​​​


问题说明:

要查找某目录下(包含子文件内)所有指定类型的文件(通配符指定),对其进行Move或Copy

一般可以直接搜索关键词,列出指定文件,执行Move/Copy。

でも、若是所有文件的名字是一样的,会因为名字重复,无法 Move/Copy 到同一目录下;或者,指定文件所在文件夹名有意义,需要以之重命名。

尝试用批处理解决:

图例:

处理后: 


要点提示: 

  • for /r 目录树下指定文件遍历
  • "%%~pi" 取文件路径,得到所在子目录名
  • 用延时变量!PathName:~28,-1!截取路径名 / setlocal EnableDelayedExpansion
  • 有关截取字符等 参考:笔记速查:批处理基础知识

代码:

@echo off
setlocal EnableDelayedExpansion 
		REM 设置延时变量,因为用的了路径名截取赋值
echo 搜索目录 > 目录.txt
REM echo 取文件路径 > 路径.txt
		REM 覆盖写入
set Path1="D:\Study\计网\上机课Word2"
md %Path1%
REM md D:\Study\计网\上机课Word
		REM 如果没该目录则新建

 for /r D:\Study\计网\计网复习\上机作业 %%i in (岳耀洋.docx) do (
 REM for /r 目录 %%i in (通配符指代文件名) do (

   if exist %%i (
   echo "%%i" >> 目录.txt
		REM 添加写入

   set PathName=%%~pi
   REM echo !PathName!
   set PathName2=!PathName:~20,-1!
		REM 截取路径名,得到所在子目录名

   echo 截取后:!PathName2!
   echo !PathName2! >> 目录.txt
   REM pause>nul
		REM 确认无误,注释上句,开启copy或move
		
   REM copy /y %%i %Path1%\!PathName2!.docx
   REM move /y %%i %Path1%\!PathName2!.docx
		REM /y 参数,不提问直接覆盖
		
   echo 完成当前项,按任意键继续:
   pause>nul
		REM 注释上两句,批量处理
   ))
		REM for循环的和if的  右括号
 pause
 type 目录.txt
		REM 输出搜索目录
 pause

关联问题:批处理实例:截取原文件名进行重命名_GeorgeRhua

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值