使用CMD复制粘贴文件

时间:2015-03-27 16:22:01

标签: cmd copy xcopy

我想要完成以下操作:将文件A从目录A复制到目录B,但文件A已存在于目录B中,我不想覆盖它,只需将新文件放在目录B中,并带有(1)或者其他什么我会知道区别。我无法在脚本中手动命名文件,因为我打算将其作为批处理文件并每隔几个小时运行一次,因此导致存在不同名称的同一文件。 IE浏览器。文件A,文件A(1),文件A(2)等等。请帮忙。谢谢

4 个答案:

答案 0 :(得分:2)

将Xcopy命令与参数/ D

一起使用
 C:\> xcopy D:\source_dest E:\target_dest /E /D

/ E参数使其复制带有子文件夹的文件

/ D参数使其复制文件而不覆盖

如果想要更多帮助通知我。如果它可以投票

答案 1 :(得分:0)

循环拷贝是指源目录的情况     包含目标目录。自目的地目录     是源的一部分,复制过程最终开始复制     目标目录到目的地的更深部分。     这个过程将继续,直到有限的磁盘空间为止     最终耗尽。

To avoid this condition but to achieve the objective, one can
specify a temporary destination which is on another volume (e.g.,
D:\temp\) and later copy the temporary destination to the final
destination, and delete the temporary directory at the end.

答案 2 :(得分:0)

在运行xcopy命令之前检查文件是否存在然后运行复制命令

if NOT  EXIST c:\directory B\File A ( xcopy c:\Directory A\File A c:\Directory B )

答案 3 :(得分:0)

enter image description here

以下是针对文件夹的,但您可以对其进行修改。

使用新增加的文件夹名称[例如TEST(1)... TEST(2)...文件夹]对现有文件夹目录(及其中的所有内容)进行备份。

第一部分:Start将设置路径文件夹名称(%PathFolder%)的%userprofile%\Desktop\TEST变量,然后搜索是否存在。如果不存在,将创建它(xcopy),否则,将创建它(%PathFolder%),将:Search变量定向到%1标签(for-)循环部分以进行进一步处理...

提示:可以使用set "PathFolder=%1"变量来设置PathFolder :Search,这样,当您在此当前保存的批处理文件上拖放文件夹时,它将起作用。

第二部分%PathFolder%将在%userprofile%\Desktop\TEST变量(::Make a backup of existed folder directory (and all contents in it) with new increase number in folder name. @echo off setlocal EnableDelayedExpansion set "IncrNum=1" :Start ::The following will set the "%PathFolder%" variable with path to folder name (%userprofile%\Desktop\TEST) and then will search if exist. If NOT exists, will create it (xcopy), else, If exist, will directing the "%PathFolder%" variable to :Search label (for-)loop section for further handling... ::Tip: Can be used %1 instead of %userprofile%\Desktop\TEST in [set "PathFolder=..."] line so it will work when you Drag-n-Drop a folder on this current saved batch file. set "PathFolder=%userprofile%\Desktop\TEST" if NOT exist "%PathFolder%" ( xcopy %PathFolder% %PathFolder% /i /y exit /b ) else ( goto :Search ) exit /b :Search ::The following will search in the "%PathFolder%" variable (%userprofile%\Desktop\TEST) and will make a COPY of "TEST" folder (and all contents in it) with an increase number added in parenthesis at the end of folder name [like TEST(1)]. If alredy exist TEST(1) then will copy TEST folder as TEST(2) ... or TEST(3) ... and so on. for /f "tokens=*" %%G in ('dir /b /s /a:d "%PathFolder%*"') do ( if exist %%G^(%IncrNum%^) ( echo At "%%~dpG" a folder "%%~nG(%IncrNum%)" alredy existed. set /a IncrNum+=1 goto :Search ) else ( echo. echo. echo The "%%~nG" folder and all contents in it echo will be copied now as "%%G(%IncrNum%)". echo. pause xcopy %%G %%G^(%IncrNum%^) /i /y exit /b ) ) :EndBatch set "PathFolder=" pause exit )中进行搜索,并进行COPY of“ TEST”文件夹(及其中的所有内容),并添加一个增加的数字放在文件夹名称末尾的括号中(例如TEST(1))。如果已经存在TEST(1),则将TEST文件夹复制为TEST(2)...或TEST(3)...,依此类推。

total