【发布时间】:2013-06-05 21:13:31
【问题描述】:
我正在编写一个将数据库备份文件存储到多个位置的脚本。此外,数据存储在通常可访问的 NAS 上。如果不是这种情况,则将截获错误消息。 我是这样尝试的:
wshshell = WScript.CreateObject("WScript.Shell");
fso = WScript.CreateObject("Scripting.FileSystemObject");
SetupPath = WScript.arguments(0);
if (fso.FileExists(SetupPath))
{
//Load setup JSON
SetupFile = fso.OpenTextFile(SetupPath, 1, true, 0);
eval(SetupFile.ReadAll());
// Parse setup configuration from JSON
...
BackupPath = Setup["BackupPath"];
FilesForBackup = Setup["FilesForBackup"];
NASBackupPath = Setup["NASBackupPath"];
...
CreateNewBackupFiles();
Log("Script was successfully executed.");
}
else
{
Log("Script was not successfully executed.");
}
/* Creates a new compressed database backup */
function CreateNewBackupFiles()
{
tempfile = fso.GetTempName();
file = fso.GetFile("C:\\Program\\7-Zip\\7z.exe");
rarexe = file.ShortPath;
script = rarexe + " a -r " + tempfile + " " + FilesForBackup;
wshshell.Run(script, 0, true);
fso.CopyFile(tempfile, BackupPath + PrefixBackupFile + "backup.7z");
//Save to NAS
if(NASBackupPath!="")
{
try
{
fso.CopyFile(tempfile, NASBackupPath);
}
catch(err)
{
Log("Path \"" + NASBackupPath + "\" not available.");
}
}
fso.DeleteFile(tempfile, true); //delete tempfile
}
/* Saves a log in "Debug.Log" */
function Log(msg)
{
fs = WScript.CreateObject("Scripting.FileSystemObject");
a = fs.OpenTextFile("Debug.log", 8, true, 0);
line = "[" + CurrentTime()+ "] ";
line += "[" + WScript.ScriptName + "] ";
line += "[" + msg + "]";
a.WriteLine(line);
}
尽管如此,仍会继续发出错误。我在 Windows XP SP3 上使用脚本。是否有可能使用 javascript 捕获此错误?
谢谢
【问题讨论】:
-
如果这是唯一产生错误的代码,这将引发错误的原因有以下三个:
NASBackupPath未定义,您的代码中存在语法错误或其他错误Log函数。 -
感谢您的回答! NASBackupPath 在脚本的开头定义。如果网络路径可用,一切正常!日志功能还用于保存其他脚本信息。所以我认为 try-catch 语句似乎无法捕捉到这种错误。
-
你能显示脚本的其余部分吗?
-
我不允许展示整个脚本。我会在几分钟内总结并发布最重要的几行。
标签: javascript exception networking try-catch jscript