在.bat文件中嵌入Javascript

在.bat文件中嵌入Javascript,javascript,batch-file,Javascript,Batch File,有没有办法从.bat文件执行javascript或将javascript嵌入.bat文件中 我需要一个javascript代码来写入/读取本地文件夹中的文件。这个javascript我应该能够使用.bat来执行它 可能吗 谢谢 SNA在Windows上,在批处理文件中,尝试 cscript jsfile.js 是。当然,只在Windows上 也就是说,可能有更好的方法来做到这一点。您需要JavaScript做什么?为什么必须是JavaScript?简短回答:不 Javascript(从浏览器运行

有没有办法从.bat文件执行javascript或将javascript嵌入.bat文件中

我需要一个javascript代码来写入/读取本地文件夹中的文件。这个javascript我应该能够使用.bat来执行它

可能吗

谢谢


SNA

在Windows上,在批处理文件中,尝试

cscript jsfile.js

是。当然,只在Windows上

也就是说,可能有更好的方法来做到这一点。您需要JavaScript做什么?为什么必须是JavaScript?

简短回答:不

Javascript(从浏览器运行时)无法访问客户端资源(这是为了避免安全风险而设计的)

您可以在浏览器之外使用Javascript来创建脚本,但是您应该提供更多关于您正在尝试执行的操作(以及您希望在哪个操作系统上运行此操作)的详细信息


另外,请查看更多详细信息。

您可以使用基于命令行的脚本主机从批处理文件运行JScript脚本

您需要将脚本保存在单独的文件中,并将其作为参数传递给CScript.exe。如果希望将所有内容都保存在一个单一文件中,可以将JScript代码嵌入批处理文件中,将其转储到一个临时文件中,然后将其传递给CScript.exe,然后删除临时脚本文件


可能有更优雅的解决方案(希望)

您可以使用基于命令行的脚本主机从批处理文件运行JScript脚本

您需要将脚本保存在单独的文件中,并将其作为参数传递给CScript.exe。如果希望将所有内容都保存在单个文件中,可以将JScript代码嵌入批处理文件中,将其转储到临时文件中,然后将其传递给CScript.exe,然后删除临时脚本文件


可能会有更优雅的解决方案(希望)

按照这两个步骤在Windows批处理文件中运行Javascript,即.BAT或.CMD

第一步:将这些行添加到文件的开头

@set @junk=1 /*
@echo off
cscript //nologo //E:jscript %0 %*
goto :eof
*/
第二步:编写Javascript以仅使用Windows脚本主机中可用的对象,即使用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("        ------       ")
@set@junk=1/*
@回音
cscript//nologo//E:jscript%0%*
后藤:eof
*/
x=WScript.Arguments
Yr=x(0);Mo=x(1)
YS=“JanFebMarAprMayJunJulAugSepOctNovDec”
MN=Mo12?Mo:YS.substr(3*Mo-3,3)//月名
echo(“,Yr,”,MN)
echo(“Mo Tu We Th Fr Sa Su”)
WD=新日期(年,月-1,1).getDay();
如果(WD==0)WD=7//第一周的周日数
LD=新日期(年、月、0)。getDate()//月的最后一天
Wk=“”;对于(D=1;D对于(D=1;D我知道我做这件事有点晚了,但是如果您的系统上安装了node.js,您可以使用bat文件调用节点函数并执行javascript代码

Node.js(在使用模块时)允许您执行bat文件可以执行的许多操作。仅使用javascript您可以编辑/设置本地文件,运行exe文件等等

设置此设置的分步指南如下: 1) 下载并安装node.js 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"

你们都准备好了

取决于您所指的javascript。您几乎没有选择-下面的所有脚本都应使用
.bat
扩展名保存:

1)cscript.exe附带的JScript:

@if (@X) == (@Y) @end /*
@cscript //E:JScript //nologo "%~f0" "%*"
@exit /b %errorlevel%
*/

WScript.StdOut.WriteLine("Echo from cscript's javascript");
2)HTA/IExplorer附带的javascript(它还允许您使用UI元素并访问本地文件系统):

有几种方法可以在不创建exe文件的情况下使用它,但我认为这是最可读的方法

4)如果您使用的是NODE.JS

0</* ::

@echo off
    
    echo hello from batch
    node "%~f0" %*

exit /b %errorlevel%


*/0;

console.log('Hello from Node');

0当我们谈论
.bat
文件时,“仅在Windows上”是一个问题吗?我不认为有人试图在DOS上这样做。@Joachim指出操作系统的局限性在我看来从来都是正确的,
.bat
是Windows世界特有的,但shell脚本通常不是。
@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")
0</* ::

@echo off
    
    echo hello from batch
    node "%~f0" %*

exit /b %errorlevel%


*/0;

console.log('Hello from Node');