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

[文件操作] 批处理如何实现根据输入的数字将指定文件夹备份成多个?

各位大神求助一个批处理的多份拷贝的难题,谢谢
当前目录c:\test
目录里   disk文件夹 和  1.bat    2个文件,1.bat用来放批处理代码。

目标目录d:\fox

要实现功能:运行1.bat实现,让你输入备份次数,如果输入2,就将 c:\test\disk整个文件夹及里面内容备份拷贝到d:\fox下2个,备后的文件名按disk01\ disk02 ,如果再按1.bat拷贝备份文件夹名按03、04、05...不重复

本帖最后由 yhcfsr 于 2018-4-20 18:32 编辑

回复 3# yanhcl


    将你的代码贴到代码框中,这样乱七八糟,怎么看?
   而且,有错误就要把图或错误信息发出来。
  再且,有必要加个判断吗?不存在目标目录,会自动创建的。你就判断源目录的存在吧,如果不存在源目录就exit

TOP

回复 2# yhcfsr

@set total_times=0
@echo off
set "SrcDir=%cd%\1"               
set "desDir=c:\Backup5"

if exist c:\backup5 (
   echo "已经存在文件夹"
)


else (
md c:\backup5
)



                 
set/p "times=Please enter the number of create copies:"
for /f "delims=" %%a in ("%SrcDir%") do set "name=%%~nxa"                 
for /l %%a in (1,1 %times%) do (                  
set/a total_times+=1&setlocal enabledelayedexpansion                  
if !total_times! lss 10 ( xcopy "%SrcDir%" "%desDir%\%name%0!total_times!" /I /E

/Y ) else (                  
xcopy "%SrcDir%" "%desDir%\%name%!total_times!" /I /E /Y)                  
endlocal                  
)                  
rem 记录总共运行次数到BAT文件                  
(for /f "delims=" %%a in ('type "%0"') do if not defined first (                  
echo;@set total_times=%total_times%&set first=1) else (echo;%%a))>"tp"         
move /y "tp" "%0">nul

if not exist

pause


    我加了一个目录判断但总提示有错误麻烦高手帮忙看一下

TOP

本帖最后由 yhcfsr 于 2018-4-20 11:25 编辑

须知:代码第一行是总共备份的次数。在你第一次运行前:如果目标目录没有备份,设置为0;反之有N个备份就设置为N,新的备份命名为diskN+1
这是首次运行的设置,以后无需设置。
  1. @set total_times=0
  2. @echo off              
  3. set "SrcDir=d:\test\BBC"                  
  4. set "desDir=d:\test1"                  
  5. set/p "times=input copy times:"
  6. for /f "delims=" %%a in ("%SrcDir%") do set "name=%%~nxa"                 
  7. for /l %%a in (1,1 %times%) do (                  
  8. set/a total_times+=1&setlocal enabledelayedexpansion                  
  9. if !total_times! lss 10 ( xcopy "%SrcDir%" "%desDir%\%name%0!total_times!" /I /E /Y ) else (                  
  10. xcopy "%SrcDir%" "%desDir%\%name%!total_times!" /I /E /Y)                  
  11. endlocal                  
  12. )                  
  13. rem 记录总共运行次数到BAT文件                  
  14. (for /f "delims=" %%a in ('type "%0"') do if not defined first (                  
  15. echo;@set total_times=%total_times%&set first=1) else (echo;%%a))>"tp"         
  16. move /y "tp" "%0">nul   
  17. pause&exit
复制代码

TOP

返回列表