2

我写了一个批处理文件。这是我的第一个,所以我仍然很讨厌这个。它的作用是从 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"

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

你能告诉我有什么问题吗?

4

2 回答 2

2

试试这个并查看日志文件以查看:
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"
于 2013-06-12T10:11:53.543 回答
0

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

@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,以运行相同的功能并从一个目录复制到另一个目录。

于 2013-06-12T09:37:02.480 回答