【问题标题】:Batch files datetime批处理文件日期时间
【发布时间】:2013-06-12 09:18:13
【问题描述】:

我写了一个批处理文件。这是我的第一个,所以我仍然很讨厌这个。它的作用是从 unc 文件夹路径复制数据库备份文件并将其粘贴到我的本地计算机上。文件名每晚都会更改,并附加日期时间。 即file_backup_201306112210.bak

以下是我在下面的批处理文件中编写的内容

set datetimef=%date:~-4%%date:~3,2%%date:~0,2%
cmd /c echo F | xcopy "\\FileName\S$\DBs\file_backup_%datetimef%*.bak" "E:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\file_backup.bak"

奇怪的是,它时不时地工作,但其他日子却失败了。我试图手动运行它,但仍然失败。

你能告诉我哪里出了问题吗?

【问题讨论】:

  • 失败是什么意思?它会给出错误消息吗?如果有,是什么?
  • 您是否期望每次执行的日期格式都相同?您是否使用相同的帐户来执行批处理文件?
  • 你为什么要做cmd /c - 为什么不只是echo F | xcopy whatevr
  • 嗯,它没有给出错误。任务调度程序说任务完成但它没有复制。这就是为什么我认为 datetimef 不正确的原因。因为我不认为批处理文件找不到文件
  • 也许echo %datetimef% 有意义。

标签: file batch-file


【解决方案1】:

试试这个并在日志文件中查看:
A) 如果服务器可访问并且
B)如果存在与文件规范匹配的文件

@echo off
set datetimef=%date:~-4%%date:~3,2%%date:~0,2%
echo copying "file_backup_%datetimef%*.bak" on %date% at %time% >>"%userprofile%\desktop\log.txt"
dir "\\FileName\S$\DBs\file_backup_%datetimef%*.bak" >>"%userprofile%\desktop\log.txt" 2>&1

echo f|xcopy "\\FileName\S$\DBs\file_backup_%datetimef%*.bak" "E:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\file_backup.bak"

【讨论】:

  • 好的,伙计们。我正式愚蠢。昨晚创建备份的日期格式会发生什么,批处理文件正在搜索具有当前日期日期的文件。所以有时它会起作用,因为备份有时会在午夜之后完成。我只想对所有帮助过我的人说声谢谢。我真的很感谢大家。谢谢
【解决方案2】:

有点混淆究竟是什么不起作用,但您可以做几件事,为您的备份文件名中的日期和日期时间:

@ECHO OFF
:: http://blog.g-ball.com/2010/08/26/year-month-day-date-batch-script/
:: Formatting the date into a YYYYMMDD format and setting it to the variable,  varTodaysDate
SET varYYYY=%DATE:~10,4%
SET varMM=%DATE:~4,2%
SET varDD=%DATE:~7,2%
SET varTodaysDate=%varYYYY%%varMM%%varDD%

如果您在启动批处理时遇到问题,您可以在启动批处理时检查您是否已登录。您是否从服务器管理启动批处理文件?如果是,您可以检查其配置(编辑:检查您使用哪个帐户运行它,运行用户是否登录选项,然后运行任务,使用以下用户帐户:管理员)。如果您有权利问题,我会向您推荐 CPAU,来自 http://www.joeware.net/freetools/tools/cpau/。 它将以管理员身份运行批处理,下载并包含它,如下所示:

CPAU.exe -u 1 -p 1 -ex "cmd /c echo F | xcopy "\\FileName\S$\DBs\file_backup_%varTodaysDate%*.bak" "E:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\file_backup.bak"" -wait > log.txt 2> ./logerror.txt

如果您从共享驱动器进行 xcopy,则必须替换 CPAU.exe -u username -p password,但我不推荐它,它是如果有人获取您的批处理文件,则存在安全漏洞。我可以推荐的相反,是带有脚本的 WinSCP 来运行相同的功能并从一个目录复制到另一个目录。

【讨论】:

    猜你喜欢
    • 2015-02-28
    • 2011-12-05
    • 1970-01-01
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多