我想要完成以下操作:将文件A从目录A复制到目录B,但文件A已存在于目录B中,我不想覆盖它,只需将新文件放在目录B中,并带有(1)或者其他什么我会知道区别。我无法在脚本中手动命名文件,因为我打算将其作为批处理文件并每隔几个小时运行一次,因此导致存在不同名称的同一文件。 IE浏览器。文件A,文件A(1),文件A(2)等等。请帮忙。谢谢
答案 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)
以下是针对文件夹的,但您可以对其进行修改。
使用新增加的文件夹名称[例如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