中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何用批处理批量保存系统盘中除系统自带以外的文件??
作者:
标题: 如何用批处理批量保存系统盘中除系统自带以外的文件?? 上一主题 | 下一主题
youkkk
中级用户





积分 274
发帖 119
注册 2006-10-17
状态 离线
『楼 主』:  如何用批处理批量保存系统盘中除系统自带以外的文件??

由于经常帮别人重装系统.有时PC的主人出去了忘了说要保存系统盘中什么什么文件....导致做系统的时候很郁闷......:( 题目如上~谢谢~


2007-3-1 09:12
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
qasa
高级用户




积分 959
发帖 311
注册 2006-4-11
来自 广东-LianJiang
状态 离线
『第 2 楼』:  

要是机主没说要保留什么文件的话,你怎么知道要保留什么呀? 不过一般都是几个地方: 1、桌面 2、收藏夹 3、我的文档 批处理可这样写:
@echo off
echo 正在备份,请稍候......
md d:\backup&md d:\backup\桌面&md d:\backup\收藏夹&md d:\backup\我的文档
xcopy "%userprofile%""My Documents"\. d:\backup\我的文档\ /s /y /e >nul 2>nul
xcopy "%userprofile%"\桌面\. d:\backup\桌面\ /s /y /e >nul 2>nul
xcopy "%windir%""Favorites"\. d:\backup\收藏夹\ /s /y /e >nul 2>nul
echo 备份完毕! ! !&pause>nul




κχυμγνξοθπρωψιαδλεηφβτζσ┬╀┾┳┞┯┰┱┣┲┳╂╁│├┟┭┠这是什么??这就是我的人生
2007-3-1 10:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
youkkk
中级用户





积分 274
发帖 119
注册 2006-10-17
状态 离线
『第 3 楼』:  

谢谢二楼的兄弟. 我不一般的.... 也许我没有说的详细的原故吧. 我举个例子.比如机主在WINDOWS等比较不常保存文件的文件夹中也存放了文件....上面的就........


2007-3-1 10:04
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
qasa
高级用户




积分 959
发帖 311
注册 2006-4-11
来自 广东-LianJiang
状态 离线
『第 4 楼』:  

...... 这有点像大海捞针的感觉,如果有没指定类型的话,这是不可能,除非有人把原来系统的文件抓了个快照,然后再对比,如果不同就备份出来。 有点难......




κχυμγνξοθπρωψιαδλεηφβτζσ┬╀┾┳┞┯┰┱┣┲┳╂╁│├┟┭┠这是什么??这就是我的人生
2007-3-1 10:08
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 5 楼』:  

我的基本是系统的原始文件 要不要dir给你看看=。= 我知道了!自己建立个假目录,全部都是空txt文档,但是名字和系统文件对应! 然后对系统文件进行复制的时候用if exist 那个目录里的文件是否存在不存在就copy


2007-3-1 10:11
查看资料  发短消息  网志   编辑帖子  回复  引用回复
qasa
高级用户




积分 959
发帖 311
注册 2006-4-11
来自 广东-LianJiang
状态 离线
『第 6 楼』:  

我知道了!自己建立个假目录,全部都是空txt文档,但是名字和系统文件对应! 然后对系统文件进行复制的时候用if exist 那个目录里的文件是否存在不存在就copy
不用这样,安装完所有软件后,抓快照最简单的方法,可用:
dir /s /a-d /b >系统快照.txt
然后备份的时候就这个快照对比。
[ Last edited by qasa on 2007-2-28 at 11:01 PM ]




κχυμγνξοθπρωψιαδλεηφβτζσ┬╀┾┳┞┯┰┱┣┲┳╂╁│├┟┭┠这是什么??这就是我的人生
2007-3-1 10:23
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 7 楼』:  

然后备份的时候就这个快照对比。 你要怎么对比?


2007-3-1 10:44
查看资料  发短消息  网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 8 楼』:  

试了下fc命令……对生成的对比文件还要再进行处理


2007-3-1 10:49
查看资料  发短消息  网志   编辑帖子  回复  引用回复
qasa
高级用户




积分 959
发帖 311
注册 2006-4-11
来自 广东-LianJiang
状态 离线
『第 9 楼』:  

首先生成系统快照:
dir "%windir%" /s /a-d /b >系统快照.txt
备份时快照对比(嘻嘻,慢慢等下吧):
@echo off&setlocal enabledelayedexpansion
set newfile=0
set sum=0
echo 正在扫描备份文件,请稍候......
for /f "delims=" %%i in ('dir /s /a-d /b c:\windows') do (
    for /f "delims=" %%j in (系统快照.txt) do (
       if %%i equ %%j set newfile=1
       )
     if !newfile! equ 0 (
        copy "%%i" d:\backup\ >nul 2>nul
        set newfile=0
        set/a sum+=1
        )
    )
echo.&echo 备份完毕,共有 !sum! 个文件备份成功。&pause>nul
[ Last edited by qasa on 2007-2-28 at 11:06 PM ]




κχυμγνξοθπρωψιαδλεηφβτζσ┬╀┾┳┞┯┰┱┣┲┳╂╁│├┟┭┠这是什么??这就是我的人生
2007-3-1 11:12
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
qasa
高级用户




积分 959
发帖 311
注册 2006-4-11
来自 广东-LianJiang
状态 离线
『第 10 楼』:  

有个缺点就是以中文起的文件名就不能备份,不知是什么回事,还得大家帮找下原因。 如: 文档.txt 一.txt 这类文件的都不能备份。 要是如: a文档.txt a 文 档.txt 则可以备份。 [ Last edited by qasa on 2007-2-28 at 10:56 PM ]




κχυμγνξοθπρωψιαδλεηφβτζσ┬╀┾┳┞┯┰┱┣┲┳╂╁│├┟┭┠这是什么??这就是我的人生
2007-3-1 11:53
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
youkkk
中级用户





积分 274
发帖 119
注册 2006-10-17
状态 离线
『第 11 楼』:  

嘻嘻...离成功越来越近了...兄弟们加油~~ 不能沉下去呀.. 扫描真的N慢.. [ Last edited by youkkk on 2007-3-1 at 12:25 PM ]


2007-3-1 12:16
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 12 楼』:  

你有没有比较你的方法和我的方法? 你这个每一个文件就要遍历一边“系统快照.txt”里的每行! 自己想象效率=.= 不知道是不是P的败笔,还是自己学的不够,for命令居然没有退出的。 for /f "delims=" %%j in (系统快照.txt) do ( if %%i equ %%j set newfile=1 <----这里如果相等就退出循环不要再对比后面的每行了 ) 而且我做了下测试: 改了下代码(echo和当前目录而已):
@echo off&setlocal enabledelayedexpansion
set newfile=0
set sum=0
echo 正在扫描备份文件,请稍候......
for /f "delims=" %%i in ('dir /s /a-d /b .') do (
    for /f "delims=" %%j in (快照.txt) do (
 if "%%i" equ "%%j" set newfile=1
echo ^(%%i^) , ^(%%j^)
       )
echo %newfile%
     if !newfile! equ 0 (
        copy "%%i" .\backup\ >nul 2>nul
        set newfile=0
        set/a sum+=1
        )
    )
echo.&echo 备份完毕,共有 !sum! 个文件备份成功。&pause>nul
但结果!!
正在扫描备份文件,请稍候...... (C:\Test\1.txt) , (C:\Test\1.txt) (C:\Test\1.txt) , (C:\Test\2.rtf) (C:\Test\1.txt) , (C:\Test\3.reg) 0 (C:\Test\2.rtf) , (C:\Test\1.txt) (C:\Test\2.rtf) , (C:\Test\2.rtf) (C:\Test\2.rtf) , (C:\Test\3.reg) 0 (C:\Test\3.reg) , (C:\Test\1.txt) (C:\Test\3.reg) , (C:\Test\2.rtf) (C:\Test\3.reg) , (C:\Test\3.reg) 0 (C:\Test\备份.bat) , (C:\Test\1.txt) (C:\Test\备份.bat) , (C:\Test\2.rtf) (C:\Test\备份.bat) , (C:\Test\3.reg) 0 (C:\Test\快照.txt) , (C:\Test\1.txt) (C:\Test\快照.txt) , (C:\Test\2.rtf) (C:\Test\快照.txt) , (C:\Test\3.reg) 0 备份完毕,共有 0 个文件备份成功。
问题有: 第一为什么返回全是0? 因为我的第一个文件相同,所以是1,是1的话就不copy同样也不会被重置为0!! 那么……什么都不用copy了。 所以应该是:
@echo off&setlocal enabledelayedexpansion
set newfile=0
set sum=0
echo 正在扫描备份文件,请稍候......
for /f "delims=" %%i in ('dir /s /a-d /b .') do (
    for /f "delims=" %%j in (快照.txt) do (
 if "%%i" equ "%%j" set newfile=1
echo ^(%%i^) , ^(%%j^)
       )
echo !newfile!
     if !newfile! equ 0 (
        copy "%%i" .\backup\ >nul 2>nul
        set newfile=0
        set/a sum+=1
        )
set newfile=0
    )
echo.&echo 备份完毕,共有 !sum! 个文件备份成功。&pause>nul
这样,虽然可以完成了。 但这个的循环次数真是不可想象! 顺便测试了下上面的提到的文件名问题: 测试结果可以备份。
正在扫描备份文件,请稍候...... (C:\Test\1.txt) , (C:\Test\1.txt) (C:\Test\1.txt) , (C:\Test\2.rtf) (C:\Test\1.txt) , (C:\Test\3.reg) (C:\Test\1.txt) , (C:\Test\一.txt) (C:\Test\1.txt) , (C:\Test\复件 文 档.txt) 1 (C:\Test\2.rtf) , (C:\Test\1.txt) (C:\Test\2.rtf) , (C:\Test\2.rtf) (C:\Test\2.rtf) , (C:\Test\3.reg) (C:\Test\2.rtf) , (C:\Test\一.txt) (C:\Test\2.rtf) , (C:\Test\复件 文 档.txt) 1 (C:\Test\3.reg) , (C:\Test\1.txt) (C:\Test\3.reg) , (C:\Test\2.rtf) (C:\Test\3.reg) , (C:\Test\3.reg) (C:\Test\3.reg) , (C:\Test\一.txt) (C:\Test\3.reg) , (C:\Test\复件 文 档.txt) 1 (C:\Test\一.txt) , (C:\Test\1.txt) (C:\Test\一.txt) , (C:\Test\2.rtf) (C:\Test\一.txt) , (C:\Test\3.reg) (C:\Test\一.txt) , (C:\Test\一.txt) (C:\Test\一.txt) , (C:\Test\复件 文 档.txt) 1 (C:\Test\二.txt) , (C:\Test\1.txt) (C:\Test\二.txt) , (C:\Test\2.rtf) (C:\Test\二.txt) , (C:\Test\3.reg) (C:\Test\二.txt) , (C:\Test\一.txt) (C:\Test\二.txt) , (C:\Test\复件 文 档.txt) 0 (C:\Test\备份.bat) , (C:\Test\1.txt) (C:\Test\备份.bat) , (C:\Test\2.rtf) (C:\Test\备份.bat) , (C:\Test\3.reg) (C:\Test\备份.bat) , (C:\Test\一.txt) (C:\Test\备份.bat) , (C:\Test\复件 文 档.txt) 0 (C:\Test\复件 复件 文 档.txt) , (C:\Test\1.txt) (C:\Test\复件 复件 文 档.txt) , (C:\Test\2.rtf) (C:\Test\复件 复件 文 档.txt) , (C:\Test\3.reg) (C:\Test\复件 复件 文 档.txt) , (C:\Test\一.txt) (C:\Test\复件 复件 文 档.txt) , (C:\Test\复件 文 档.txt) 0 (C:\Test\复件 文 档.txt) , (C:\Test\1.txt) (C:\Test\复件 文 档.txt) , (C:\Test\2.rtf) (C:\Test\复件 文 档.txt) , (C:\Test\3.reg) (C:\Test\复件 文 档.txt) , (C:\Test\一.txt) (C:\Test\复件 文 档.txt) , (C:\Test\复件 文 档.txt) 1 (C:\Test\快照.txt) , (C:\Test\1.txt) (C:\Test\快照.txt) , (C:\Test\2.rtf) (C:\Test\快照.txt) , (C:\Test\3.reg) (C:\Test\快照.txt) , (C:\Test\一.txt) (C:\Test\快照.txt) , (C:\Test\复件 文 档.txt) 0 (C:\Test\文 档.txt) , (C:\Test\1.txt) (C:\Test\文 档.txt) , (C:\Test\2.rtf) (C:\Test\文 档.txt) , (C:\Test\3.reg) (C:\Test\文 档.txt) , (C:\Test\一.txt) (C:\Test\文 档.txt) , (C:\Test\复件 文 档.txt) 0 备份完毕,共有 5 个文件备份成功。
顺便把我测试的全部文件上传过来: [ Last edited by slore on 2007-3-1 at 01:06 AM ]


   此帖被 +2 点积分    点击查看详情   
评分人:【 youkkk 分数: +2  时间:2007-3-2 02:47


附件 1: Test.rar (2007-3-1 12:45, 1.14 KiB, 下载附件所需积分 1 点 ,下载次数: 6)
2007-3-1 12:45
查看资料  发短消息  网志   编辑帖子  回复  引用回复
youkkk
中级用户





积分 274
发帖 119
注册 2006-10-17
状态 离线
『第 13 楼』:  

谢谢几位的热心回复~~...


2007-3-2 02:47
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 14 楼』:  

for 我一般使用 GOTO 跳出去。


2007-3-2 02:55
查看资料  发短消息  网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 15 楼』:  

XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/EXCLUDE:file1[+file2][+file3]...] source 指定要复制的文件。 destination 指定新文件的位置和/或名称。 /A 只复制有存档属性集的文件, 但不改变属性。


2007-3-2 03:00
查看资料  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: