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

[文件操作] 批处理备份文件时如何把已存在的文件复制到指定目录?

当在执行Copy命令时,如果发现文件已经存在,则先将源文件备份到backup目录中,然后再进行Copy的覆盖工作, 请问代码应该加在什么地方,添加什么代码?

[ 本帖最后由 alpha 于 2010-2-19 18:09 编辑 ]

  1. ::通过if exist 判断是否存在a.txt,存在就复制到backup文件夹
  2. if exist a.txt copy a.txt backup\
  3. ::下面的命令反正是要执行的
  4. copy /y a.txt b\
复制代码

TOP

是这样一个情况,我需要覆盖的文件特别的多,能不能用类似什么*.*之类的字符表示,
另外,我的目的是要从123目录中拷贝文件到b目录(注意:123目录与b目录为同级目录),如果遇到相同的文件则先将文件备份至backup目录中(会有很多相同的文件要被覆盖),然后正常拷贝。

TOP

如果显示符合要求,把echo.去掉即可实现...
  1. @echo off
  2. for /f "delims=" %%a in ('dir /s /b /a-d "123\*.*"') do (
  3.   if exist "b\%%~nxa" (
  4.     echo.copy /y "%%a" backup\
  5.     echo.copy /y "%%a" b\
  6.     echo.
  7.   )
  8. )
  9. pause
复制代码

TOP

楼上的兄弟提供的代码是判断b与123中是否有相同的文件存在

  针对性的完整代码如下
  从123目录中拷贝文件到b目录(123目录与b目录为同级目录),如果遇到相同的文件则先将b中的文件备份至backup目录中,然后把123中的所有文件正常拷入b目录中。
  1. @echo off
  2. for /f "delims=" %%a in ('dir /s /b /a-d "123\*.*"') do (
  3.   if exist "b\%%~nxa" (
  4.     copy /y "b\%%~nxa" bakup\ >nul
  5.    )
  6. )
  7. copy /y  123\*.* b\ >nul
  8. exit
复制代码

TOP

楼上两位给的代码不行啊,不起作用,另外,如果要备份的文件包含子目录或者含有空格怎么办呢?

TOP

有没有人知道啊!!!

TOP

4楼的代码运行之后显示的结果是什么?
Do All in Command Line

TOP

原帖由 BatCoder 于 2010-2-26 22:06 发表
4楼的代码运行之后显示的结果是什么?

运行时,没有错误显示,但是却没有效果,没做任何操作

TOP

回复 9楼 的帖子

是任何显示都没有吗?
Do All in Command Line

TOP

原帖由 BatCoder 于 2010-2-27 22:02 发表
是任何显示都没有吗?

是的,什么都没有

TOP

把"123\*.*"换成你需要备份的文件夹的绝对路径
Do All in Command Line

TOP

原帖由 BatCoder 于 2010-2-28 11:33 发表
把"123\*.*"换成你需要备份的文件夹的绝对路径

还是不行

TOP

请把你修改之后的代码、待备份的目录结构截图上来看看。
Do All in Command Line

TOP

原帖由 BatCoder 于 2010-2-28 17:51 发表
请把你修改之后的代码、待备份的目录结构截图上来看看。

您的意思是说,您测试成功了?

哦对了,我的目录里面包含子文件夹和空格文件名

TOP

返回列表