Board logo

标题: [文本处理] 关于自动备份自动生成log日志的BAT脚本 [打印本页]

作者: loveql26    时间: 2018-10-30 01:31     标题: 关于自动备份自动生成log日志的BAT脚本

本帖最后由 loveql26 于 2018-10-30 01:32 编辑

求助
如何将“D:\新新”这个文件夹(包含文件夹下的所有文件)复制到“E:\备份”目录下自动生成一个当天日期的文件里,如遇到文件被占用忽略的操作,然后在自动生成一个当天日期的txt文件。并将备份的开始时间(具体到几时几分几秒)以及结束时间(具体到几时几分几秒)写入到这个txt中。结束BAT
麻烦哪位大神能好心帮个忙,谢谢
作者: lifei259    时间: 2018-10-30 08:42

  1. @echo off
  2. (echo,备份开始时间:%time%
  3. xcopy /e /i /a /r /h /y /c "D:\新新"  "E:\备份\%date%"
  4. echo,备份结束时间:%time%
  5. )>>%date%.txt
  6. pause
复制代码

作者: loveql26    时间: 2018-10-30 11:03

回复 2# lifei259


    无法生成当天时间的txt文件,这是什么原因啊?
作者: lifei259    时间: 2018-10-30 11:19

回复 3# loveql26


   文件和文件夹命名是不能使用以下9个字符:/ \ : * " < > | ?%time%时间的格式是:11:18:37.39 ,所发不能用,要想用可以改一下格式,就行了
作者: loveql26    时间: 2018-10-30 11:25

回复 4# lifei259


    不是命名哦。。文件夹的命名不是日期吗?往txt写入的内容才是时间么。这个有影响吗?
作者: Batcher    时间: 2018-10-30 11:25

回复 3# loveql26


@echo off
for /f %%i in ('powershell -c "Get-Date -uformat '%%Y%%m%%d'"') do set "Today=%%i"
(echo,备份开始时间:%time%
xcopy /e /i /a /r /h /y /c "D:\新新"  "E:\备份\%Today%"
echo,备份结束时间:%time%
)>>%Today%.txt
作者: Batcher    时间: 2018-10-30 11:26

回复 5# loveql26


操作系统不同,日期格式也可能不同:

星期二 2008-07-29
2008-07-29 星期二
07/29/2008 Tue
Tue 07/29/2008
作者: loveql26    时间: 2018-10-30 11:55

回复 7# Batcher


    好哒。。我试试。谢谢大神
作者: loveql26    时间: 2018-10-30 13:22

回复 7# Batcher


    这个txt生成的路径是哪里啊?日期格式是不是不同的操作系统需要手工改一下呢?
作者: Batcher    时间: 2018-10-30 13:34

回复 9# loveql26


默认是当前路径,你可以自己指定成某个完整路径,例如 C:\%Today%.txt
6楼代码测试过了吗?它不需要你手工修改系统日期格式。
作者: loveql26    时间: 2018-10-30 14:20

回复 10# Batcher


    测试了。。就是有时候不生成txt,有的时候生成。。不知道什么原因
作者: Batcher    时间: 2018-10-30 14:52

回复 11# loveql26


把 @echo off 删掉
代码保存为 C:\test.bat
打开一个CMD窗口,执行命令:
C:\test.bat

这样可以看到详细的报错信息或者线索
作者: loveql26    时间: 2018-10-31 01:19

回复 12# Batcher


    好的。。谢谢啦。。大神,我先试试
作者: lifei259    时间: 2018-10-31 08:33

我上传的代码都是试过的
作者: Batcher    时间: 2018-10-31 08:44

回复 14# lifei259


    %date%这种写法通用性较差,在你电脑上测试成功的代码拿到别的电脑上可能会出错,原因见7楼。
作者: xczxczxcz    时间: 2018-10-31 09:47

来一个 保存为  xxx.ps1  右键在powershell 中运行
  1. $txt= get-date -Uformat "%Y年-%m月-%d日"
  2. mkdir "e:\备份\$txt" -force
  3. get-date -Uformat "开始时间  $txt %H:%M:%S"|ac "e:\备份\$txt.log" -force -enc utf8
  4. copy "d:\新新" -destination "e:\备份\$txt" -Recurse -force
  5. get-date -Uformat "结束时间  $txt %H:%M:%S"|ac "e:\备份\$txt.log" -force -enc utf8
  6. pause
复制代码

作者: loveql26    时间: 2018-11-6 23:26

回复 15# Batcher


    问题找出来,是因为在用win7自带的计划任务来实现自动运行的时候会出现有时候没有处理日志的txt文件生成。还有一个问题。。这个批处理在运行的时候是没有一个文字提示(就是他在运行复制的时候一直是一个批处理的黑框,怎么在那个黑框上显示正在备份,请稍等的字样),改如何加啊?我试了很多种方法都不行,手动运行是可以出现文字提示的,但是在用系统计划任务来实现自动运行的时候文字会变成不是有效的命令。不知道该如何处理。。。。。
作者: loveql26    时间: 2018-11-6 23:27

回复 16# xczxczxcz


    我试试哦。谢谢啦
作者: Batcher    时间: 2018-11-7 13:05

回复 17# loveql26


    把你试过的几个代码压缩上传我看一下




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2