我有一个批处理文件,通过重命名和重新定位来准备word文件。 所以我使用我在本网站上找到的javascript代码为这些文件制作pdf。我称之为如下;
for %%g in ("test\*.doc") do (cscript.exe //nologo "SAVEASPDF.js" "%%~fg")
此JavaScript代码位于另一个文件saveaspdf.js
中以制作PDF。
我可以在批处理文件中嵌入一个JS代码(例如作为:FUNCTION
),以便只将所有代码保存在一个文件中吗?
这是我试图嵌入的JS,我在这个网站上找到了它。
var fso = new ActiveXObject("Scripting.FileSystemObject");
var docPath = WScript.Arguments(0);
docPath = fso.GetAbsolutePathName(docPath);
var pdfPath = docPath.replace(/\.doc[^.]*$/, ".pdf");
var objWord = null;
try
{
WScript.Echo("Saving '" + docPath + "' as '" + pdfPath + "'...");
objWord = new ActiveXObject("Word.Application");
objWord.Visible = false;
var objDoc = objWord.Documents.Open(docPath);
var wdFormatPdf = 17;
objDoc.SaveAs(pdfPath, wdFormatPdf);
objDoc.Close();
WScript.Echo("Done.");
}
finally
{
if (objWord != null)
{
objWord.Quit();
}
}
答案 0 :(得分:2)
发布了许多方法,用于在批处理脚本中嵌入和执行JScript。以下是一些:
https://stackoverflow.com/a/15169687/1012053
这是我的最爱,我将在下面使用
https://stackoverflow.com/a/4999378/1012053
我不喜欢这种方法,因为它定义了一个额外的(不需要的)环境变量。
https://stackoverflow.com/a/15176096/1012053(编辑前)
另一个很好的选择。
https://stackoverflow.com/a/9074483/1012053(最后更新2014-04-27在底部)
这种WSF技术不太方便,但功能强大,因为您可以在单个批处理脚本中嵌入和执行任意数量的独立JScript和/或VBS作业。
因此,您可以使用选项1.将两个脚本合并为一个文件:
@if (@X)==(@Y) @end /* Harmless hybrid line that begins a JScript comment
:: ******* Begin batch code *********
@echo off
for %%g in ("test\*.doc") do cscript //E:JScript //nologo "%~f0" "%%~fg"
exit /b
********* Begin JScript code **********/
var fso = new ActiveXObject("Scripting.FileSystemObject");
var docPath = WScript.Arguments(0);
docPath = fso.GetAbsolutePathName(docPath);
var pdfPath = docPath.replace(/\.doc[^.]*$/, ".pdf");
var objWord = null;
try
{
WScript.Echo("Saving '" + docPath + "' as '" + pdfPath + "'...");
objWord = new ActiveXObject("Word.Application");
objWord.Visible = false;
var objDoc = objWord.Documents.Open(docPath);
var wdFormatPdf = 17;
objDoc.SaveAs(pdfPath, wdFormatPdf);
objDoc.Close();
WScript.Echo("Done.");
}
finally
{
if (objWord != null)
{
objWord.Quit();
}
}
答案 1 :(得分:0)
答案 2 :(得分:-1)
如果您查看cscript.exe
的{{3}},它似乎想要从文件中读取脚本,所以我相信您在这里运气不佳。
如果您的脚本与nodejs兼容,那么通过nodejs运行它作为lleaff建议可能有效,但由于您使用documentation自动执行Word,因此无法执行。