是否可以从.bat文件执行javascript或将javascript嵌入.bat文件中。
我需要一个javascript代码来写/读到本地文件夹中的文件。这个javascript我应该能够使用.bat执行它。
有可能吗?。
由于
SNA
答案 0 :(得分:12)
按照以下两个步骤在Windows批处理文件(.BAT或.CMD)中运行Javascript。
第一步:将这些行添加到文件的开头
@set @junk=1 /*
@echo off
cscript //nologo //E:jscript %0 %*
goto :eof
*/
第二步:编写Javascript以仅使用Windows Scripting Host中可用的对象,即使用Wscript.Echo()在标准输出上打印输出。
通过输入calen 2011 02
@set @junk=1 /*
@echo off
cscript //nologo //E:jscript %0 %*
goto :eof
*/
x = WScript.Arguments
Yr = x(0) ; Mo = x(1)
YS = "JanFebMarAprMayJunJulAugSepOctNovDec"
MN = Mo<1 || Mo>12 ? Mo : YS.substr(3*Mo-3, 3) // Month Name
WScript.echo(" ", Yr, " ", MN)
WScript.echo(" Mo Tu We Th Fr Sa Su")
WD = new Date(Yr, Mo-1, 1).getDay() ;
if (WD==0) WD = 7 // Week Day Number of 1st
LD = new Date(Yr, Mo, 0).getDate() // Last Day of month
Wk = "" ; for (D=1 ; D < WD ; D++) Wk += " "
for (D=1 ; D<=LD ; D++) {
Wk = Wk + " " + (D<10 ? "0"+D : D) ; WD++
if ((WD==8) || (D==LD)) { WScript.echo(Wk) ; WD = WD-7 ; Wk = "" }
}
WScript.echo(" ------ ")
将它放在calen.bat或calen.cmd中,然后在任何合理的Windows上运行它。 永远不要再与另一个复杂的批处理文件斗争。
答案 1 :(得分:1)
在Windows上,在批处理文件中,尝试
cscript js file.jsp>
答案 2 :(得分:1)
我知道我有点迟了,但是如果你的系统上安装了node.js,你可以使用bat文件调用节点函数并执行你的javascript代码。
Node.js(使用模块时)可以让你做很多bat文件可以做的事情。只使用javascript,您可以编辑/短语本地文件,运行exe文件等...等等。
设置此步骤的分步指南将是: 1)下载并安装node.js https://nodejs.org/en/download/ 2)使用您要运行的js代码在计算机上创建一个javascript文件。 在此文件中,您将添加代码以允许node.js访问计算机上的本地文件。将以下代码放在javascript文件的顶部:
//Load required modules
fs = require('fs')
//Function to read local files
fs.readFile('path-to-file/this-is-my-file.txt', 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
//data is the text file
}
3)创建一个这样的bat文件:
echo off
node "path-to-javascript\index.js"
你们都安装好了!
答案 3 :(得分:1)
取决于您指的是哪种JavaScript。您几乎没有选择-以下所有脚本都应以.bat
扩展名保存:
1) csript.exe随附的JScript:
@if (@X) == (@Y) @end /*
@cscript //E:JScript //nologo "%~f0" "%*"
@exit /b %errorlevel%
*/
WScript.StdOut.WriteLine("Echo from cscript's javascript");
HTA / IExplorer随附的2) javascript(它还允许您使用UI元素并访问本地文件系统):
<!-- :
@echo off
mshta.exe "%~f0"
exit /b %errorlevel%
-->
<html>
<head>
<title>~~~~</title>
<!--meta http-equiv="X-UA-Compatible" content="IE=edge"-->
</head>
<body>
<font size="15"><b>Hello from HTA's javascript</b></font>
<script type="text/javascript">
setTimeout(function() {
document.body.innerHTML=document.body.innerHTML + "<p/><p><font size='7'>Hello from HTA's javascript</font></p>";;
}, 2000);
</script>
</body>
</html>
3) JSCrip.NET-可能是功能最强大的选项,因为它使您可以访问.NET框架(尽管它会创建一个小的.exe文件):
@if (@X)==(@Y) @end /* JScript comment
@echo off
setlocal
for /f "tokens=* delims=" %%v in ('dir /b /s /a:-d /o:-n "%SystemRoot%\Microsoft.NET\Framework\*jsc.exe"') do (
set "jsc=%%v"
)
if not exist "%~n0.exe" (
"%jsc%" /nologo /out:"%~n0.exe" "%~dpsfnx0"
)
%~n0.exe %*
endlocal & exit /b %errorlevel%
*/
import System;
Console.Write("Echo from .NET")
有很多方法可以不创建该exe文件而使用它,但这对我来说是最易读的方法。
4)如果您要命名NODE.JS,那么还有一种方法:
0</* ::
@echo off
echo hello from batch
node "%~f0" %*
exit /b %errorlevel%
*/0;
console.log('Hello from Node');
答案 4 :(得分:0)
您可以使用基于命令行的脚本主机CScript.exe从批处理文件运行JScript脚本。
您需要将该脚本放在一个单独的文件中,您可以将该脚本作为参数传递给CScript.exe。如果要将所有内容保存在sinle文件中,可以将JScript代码嵌入批处理文件中,将其转储到临时文件中,然后传递给CScript.exe并删除临时脚本文件。
可能有更优雅的解决方案(希望如此)
答案 5 :(得分:-1)
是sort of。当然,仅限Windows。
尽管如此,可能有更好的方法来做到这一点。你需要JavaScript做什么?为什么它必须是JavaScript?
答案 6 :(得分:-2)
简答:不。
Javascript(从浏览器运行时)无法访问客户端资源(这是设计使然,以避免安全风险)。
您可以使用浏览器的 来创建脚本,但是您应该提供有关您尝试执行的操作的详细信息(以及您希望在其上运行的操作系统)。< / p>
另外,请查看this page了解详情。
答案 7 :(得分:-2)
您可以使用基于命令行的脚本主机CScript.exe从批处理文件运行JScript脚本。
您需要将该脚本放在一个单独的文件中,您可以将该脚本作为参数传递给CScript.exe。如果要将所有内容保存在单个文件中,可以将JScript代码嵌入批处理文件中,将其转储到临时文件中,然后传递给CScript.exe并删除临时脚本文件。
可能有更优雅的解决方案(希望如此)