DOS批处理命令实现自动复制指定的文件夹到其他位置
发布时间:2022-11-03 15:17:38
希望用批处理命令把硬盘中指定的文件夹,比如QQ文件夹,复制到其他文件夹。同时又希望能适用于不同的电脑,每个电脑QQ文件夹的保存位置不同,因此要能够自动实现搜索。
因此我就花了点时间,自己做了一个批处理文件,在此分享给大家。欢迎大家相互交流。
我做批处理主要用到的是以下几个命令:
1.——setlocal ENABLEDELAYEDEXPANSION
作用是延迟变量,全称"延迟环境变量扩展"。主要用于定义一个变量Milti_ID, 每搜索到一 个要找的文件夹QQTEST,会自动加1,最后统计出当前复制的是第几个,一共搜索出几个。
2.——dir /s /ad /b
作用是列出当前文件夹下的所有子文件夹名称。便于下一步的搜索是否存在我们要找的文件夹QQTEST.
3..——for /f "delims="
用于字符段的提取(dir 命令的结果),最终用于判断是否存我们要找的文件夹。
4.——xcopy
作用是帮我们把找到的QQTEST文件夹复制到预先定义好的位置。
5..——If exist
作用是判断某个文件夹是否存在。如果存在,就执行某些命令。
主要功能:
预先定义好要搜索哪个盘
要搜索什么文件夹
搜索到后复制到哪个位置
第一个再磁盘根目录搜索到的复制到新位置,命名和原本一样为QQTEST
其余搜索到的,复制到新位置,后面加后缀。比如QQTEST2-QQTESTXXX
注意事项:
我的批处理主要是通过DIR /s /ad 列出所有包含搜索关键字文件夹或者子文件夹的方式来实现搜索的。但是我发现当磁盘根目录下面存在我要搜索的文件夹QQTEST时,会对DIR /s /ad的搜索结果出现干扰。因此我用了一个比较笨的方法规避这个问题。
-对于磁盘根目录下的文件夹。我要判断是否存在QQTEST这个文件夹。
我是通过If exist来判断的。如果存在,我就先把它复制到指定的位置。然后把这个文件夹暂时重新命名为QQTEST_copied. 这样就不会干扰我后期对于其他位置通过DIR /s /ad进行搜索子文件。
等全部搜索和复制完成后,再把更目录下面的QQTEST_copied还原为原本的文件名QQTEST.
全部批处理文件命令如下:
@echo OFF
setlocal ENABLEDELAYEDEXPANSION
::=====================================================================
::使用简单说明
::文件夹名称为为QQTEST,找到一个就停止,如果要查找所有的QQTEST,
::则去掉goto语句: goto finished
::这一段是设置变量,可以把D修改为需要搜索的盘符,
::把QQTEST修改为需要搜索的文件夹名称
::把E修改为希望复制到的盘符
::变量Milti_ID是当搜索出多个不同位置的文件夹的时候,复制到新位置的文件夹名称后缀
::同时也用于统计最终一共搜索出多少文件夹。
::=====================================================================
set Search_Disk=D
set Search_Folder=QQTEST
set Copy_to=E
set /a Milti_ID=0
::=====================================================================
::=====================================================================
::这一段是检查磁盘根目录下面是否存在要找的目录,如果有,为了减少程序运行时间
::可以运行完成后,通过 goto finished直接完成后退出程序
::=====================================================================
If exist "%Search_Disk%:%Search_Folder%" (
@echo off
set /a Milti_ID=!Milti_ID!+1
echo =============================================
echo 在磁盘根目录下找到指定文件夹%Search_Disk%:%Search_Folder%, 并且完成复制
echo 即将复制到新位置: %Copy_to%:%Search_Folder%
echo =============================================
xcopy "%Search_Disk%:%Search_Folder%" "%Copy_to%:%Search_Folder%" /O /X /E /H /K /I
echo =============================================
echo 复制完成
echo 为了不影响后期检查其它子文件夹,我们会临时把根目录下的%Search_Disk%:%Search_Folder% 重命名
echo 重命名为%Search_Disk%:%Search_Folder%_copied
echo ==============================================
rename "%Search_Disk%:%Search_Folder%" "%Search_Folder%_copied"
echo ==============================================
echo 重命名为%Search_Disk%:%Search_Folder%_copied 完成
echo ==============================================
)
::=====================================================================
::=====================================================================
::这一段是检查所有子目录下面是否存在要找的目录
::=====================================================================
@echo off
cd /d %Search_Disk%:
for /f "delims=" %%B in ('dir /s /ad /b %Search_Folder%') do (
if exist "%%B" (
set /a Milti_ID=!Milti_ID!+1
echo =======================================================================================
echo 发现了第!Milti_ID!处文件夹%Search_Folder%
echo 在磁盘%%B下找到指定文件夹%Search_Folder%."
echo 即将复制到新位置: %Copy_to%:%Search_Folder%!Milti_ID!
echo =======================================================================================
xcopy "%%B" "%Copy_to%:%Search_Folder%!Milti_ID!" /O /X /E /H /K /I
)
)
:finished
::=====================================================================
echo 运行完成.一共找到 !Milti_ID! 处文件夹 %Search_Folder%
echo 一共完成 !Milti_ID! 处文件夹 的复制
::=====================================================================
If exist "%Search_Disk%:%Search_Folder%_copied" (
echo 恢复刚才修改的根目录下的%Search_Disk%:%Search_Folder% 重命名操作,去掉后缀_copied
echo 把文件%Search_Disk%:%Search_Folder%_copied恢复为:%Search_Disk%:%Search_Folder%
echo ==============================================
rename "%Search_Disk%:%Search_Folder%_copied" "%Search_Folder%"
echo ==============================================
echo 恢复文件名为%Search_Disk%:%Search_Folder% 完成
echo ==============================================
)
pause
以上部分为全部批处理命令。
为了便于了解批处理的运行状态,里面会实时显示目前的工作进展,比如搜索到第几个,一共有几个,是否完成复制。复制到哪里。运行过程如下图。
运行结果,我这里设置的是把文件夹复制到E盘。从下图可以看到,每个找到的都被复制,并且按照找到的先后顺序,文件夹名称后面还增加了编号。


猜你喜欢
- 今天开始,我们学习Excel 2007系列教程的“设置数值格式”部分。第一讲我们先了解Excel 2007中可用的数字格式。通过应用不同的数
- 最近有用户在发问安全模式有什么用,能做些什么等等问题,竟然你们诚心诚意的发问了,那么小编就大发慈悲的告诉你们安全模式是Windows会提供一
- 这篇文章主要介绍了win10系统如何设置开机背景图片详细教程的相关资料,需要的朋友可以参考下本文详细内容介绍开机的时候不仅可以设置密码,还可
- 排版是PPT内页制作里不可忽视的核心设计部分,页面内容之间的有序排列会使页面达到理想的效果。而工作区域与辅助线,则是其中的“根基”所在,排版
- 用Word进行排版成为我们办公中的主要方式,偶尔我们也可能会让文字竖着排版,让文字竖着排版我们都知道怎么操作,但是如何让英文和数字也纵向显示
- 在我们使用Mac电脑中,总会有各种各样的APP通知来打扰你的工作学习,下面分享如何关闭Mac电脑的APP通知。1、打开Mac电脑系统偏好设置
- 百度网盘是最经常使用的网盘存储软件,不仅可以节省电脑内存,还可以上传、下载需要的资源,非常方便。那就有用户问了想要把自己的文件分享给朋友或者
- 如何在制作wps ppt中去设置幻灯片的动画效果呢? 下面小编就为你介绍wps ppt如何设置动画效果的方法啦!wps ppt设置动画效果的
- 电脑蓝屏是最常见的电脑故障问题之一,并且每次蓝屏时系统会出现一串错误代码提示,不同原因呈现出的错误代码也是不一样的。近期不断有win10系统
- 我们在销售电脑时往往要给顾客一些有关销售处的信息,以便提供售后服务或者再购时联系。本人将这些信息保存在顾客的系统恢复光盘中,这样顾客就不用担
- 微软今天推送了Windows 10 Mobile/PC创造者更新预览版15007,下文小编就为大家带来了Win10 Mobile/PC预览版
- wps页眉下划线怎么设置,下面小编马上分享,希望能帮到大家。wps表格页眉下划线教程打开 文档,首先双击页眉,进入页眉编辑模式。然后点击右上
- 我们平时在看一些PPT的时候,别人为了突出一些重要的内容会使用一些箭头来突出一下,今天小编为大家介绍PPT制作出酷酷的箭头图案方法,来看看吧
- 7月6日苹果推送了第二个开发者预览版iOS10 beta2、watchOS 3 beta2、tvOS10 beta2以及macOS Sier
- 一、系统设置Windows XP 默认情况下,当系统出现错误时会自动重新启动,这样当用户关机时,如果关机过程中系统出现错误就会
- 许多用户在Win10玩自带的XBox游戏的时候发现自己的服务器链接显示已阻止,无法联网进行游戏,那么遇到这种情况应该怎么办呢?下面小编就带着
- 有很多专业工具都可以做内存诊断工作,但微软已经在 Windows 中内置了一个内存诊断工具,用户可以直接在开始菜单中搜索「内存诊断」打开使用
- 用户在打开Excel表格修改内容,当打开时发现有点不对劲本来是表格文件怎么打开方式是Word的?这个问题很简单按照下面的步骤来操作即可解决。
- 有些Win10电脑用户在插入U盘/移动硬盘/读卡器/USB线连接手机/MP3时,有时会遇到“USB端口上的电涌”的错误提示,详情为:“USB
- 虽说合并单元格是个给人惹麻烦的主,可是因为人家长得比较好,所以还是到处受欢迎的,比如下图中A列,看着就不太顺眼,如果改成D列那样,就受欢迎得