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

[文件操作] 批处理使用xcopy如何使其自动应答?

我要使用xcopy命令,有没有什么办法能使bat自动应答。标况下,用xcopy /y 复制文件时,如果遇到相同文件需要覆盖时,他会提示出“目录 or 文件”让你选择,有人给出了 echo f|xcopy /y 语句进行自动应答,有没有别的办法,不用这种方法,也能实现的(类似于命令开关)。
      
请问如何实现?

[ 本帖最后由 alpha 于 2010-4-26 23:07 编辑 ]

我测试@xcopy /y s f:\s\ 时,点第一下,复制过去了,再点没提示,直接复制。只有在xcopy /y s f:\s,而且f:\下没有s文件夹的时候才提示目录 or 文件。这个时候我觉得还是提示要好一点,不然就在写xcopy的时候写清楚一点
努力学习,努力挣分

TOP

我都用以下指令,请参考
xcopy D:\DATA\Home H:\00_ASUS_NB_BKUP\D_Drive\data\Home /D/Q/E/I/C/Y
可以xcopy/? 看一下说明

TOP

(1)使用xcopy适用在档案数与子目录树不多时,若子目录树太多,有时会xcopy不确实
(2)建议使用 robocopy, it has differential copy function too.

TOP

回复 4楼 的帖子

“有时会xcopy不确实”是什么意思?

TOP

原帖由 alpha 于 2010-4-26 23:06 发表
我要使用xcopy命令,有没有什么办法能使bat自动应答。标况下,用xcopy /y 复制文件时,如果遇到相同文件需要覆盖时,他会提示出“目录 or 文件”让你选择,有人给出了 echo f|xcopy /y 语句进行自动应答,有没有别的办法,不用这种方法,也能实现的(类似于命令开关)。
      
请问如何实现?

既然使用了/y,就不会出现覆盖提示,否则/y还有什么意义呢?所以“目录 or 文件”就不是覆盖提示。而且在批处理中使用xcopy,默认是覆盖的。
出现“目录 or 文件”是因为指向的目标不包含现有目录,且不以\结尾。
解决方法任选:
1,提前创建该目录
2,使用/i参数
3,目标目录以\结尾
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

这是我的那段代码,您帮忙看看(红色部分)

原帖由 hanyeguxing 于 2010-4-27 17:00 发表

既然使用了/y,就不会出现覆盖提示,否则/y还有什么意义呢?所以“目录 or 文件”就不是覆盖提示。而且在批处理中使用xcopy,默认是覆盖的。
出现“目录 or 文件”是因为指向的目标不包含现有目录,且不以\结尾。 ...


@echo off&setlocal enabledelayedexpansion
set "ph=%cd%\tmp\"
for /f "tokens=*" %%a in ('dir /s/b/a-d tmp\') do (
set xx=%%~a
for /f "tokens=*" %%b in ("!ph!") do set xx=!xx:%%b=!
if exist "%cd%\!xx!" echo f|xcopy /y "%cd%\!xx!" "%cd%\backup\123\!xx!"&echo "!xx!">>1.txt
)
xcopy /e/y "%cd%\tmp" "%cd%"
pause

TOP

“有时会xcopy不确实”是什么意思?

我之前常用 xcopy 复制 PC 数据至U盘,Source Data有 50GB以上,目录与子目录也很多层,PC RAM有 2GB,会出现资源不足,即使使用 /D参数 (差异备份)但是也会资源不足,所以我说xcopy 不确实 (或许此说法有人认为不妥),我现在都用 robocopy

Robocopy 还提供 Log,可以告诉你备了哪些file , security access right 也可以copy过来 ( robocopy是微软提供的tool )。

以上是小弟的浅见 !

TOP

回复 8楼 的帖子

robocopy的某些功能确实比xcopy强大,不过XP系统没有自带这个命令,不如采用xcopy的可移植性好。

TOP

那麻烦大家能不能把下面的这段xcopy代码改为robocopy写成的?

  1. @echo off&setlocal enabledelayedexpansion
  2. set "ph=%cd%\tmp\"
  3. for /f "tokens=*" %%a in ('dir /s/b/a-d tmp\') do (
  4. set xx=%%~a
  5. for /f "tokens=*" %%b in ("!ph!") do set xx=!xx:%%b=!
  6. if exist "%cd%\!xx!" echo f|xcopy /y "%cd%\!xx!" "%cd%\backup\123\!xx!"&echo "!xx!">>1.txt
  7. )
  8. xcopy /e/y "%cd%\tmp" "%cd%"
  9. pause
复制代码


操作目的:

要将tmp目录下的所有文件(包括子目录)拷贝至当前目录,如果文件在复制过程中,如果遇到文件名相同的文件或文件夹(包括子目录),则先将原文件或文件夹(包括子目录)拷贝至本目录下的“backup\123”文件夹中,然后再进行覆盖复制。(上文所提到的“文件”均为无规则文件,而且包含大量含有空格的文件!

TOP

在批处理中,尽量使用D:\rec\这样的行尾加\来表示目录,这样可以避免发生很多问题
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表