找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30270|回复: 11

[原创教程] js/bat脚本混编新方案

[复制链接]
发表于 2014-11-28 01:46:38 | 显示全部楼层 |阅读模式
本帖最后由 CrLf 于 2014-11-28 02:22 编辑

该方案弥补了三种原有方案的缺点,不过仍然不支持含 */ 的批处理
  1. 1>1/* :
  2. @echo off
  3. echo 你好,我是 Batch
  4. cscript -nologo -e:jscript %0
  5. pause&exit
  6. */

  7. WScript.Echo('你好,我是 JScript')
复制代码
和其他的混编方案一样,关键只在第一句
  1. 1>1/* :
复制代码
在 Batch 看来这句相当于:
  1. : 1>1/*
复制代码
这是因为 cmd 在预处理的时候会先解析出句柄重定向(对同一句柄的多次定向以最后出现的为准),再统一后置
所以重定向被预处理到 : 后面,结果可想而知

在 JScript 看来这句相当于:
  1. 1>1/* ...*/
复制代码
1>1 的运行结果是个 Boolean 值,而 js 允许这种无意义的语句(其实对 eval 来说是有意义的)

评分

参与人数 3技术 +3 收起 理由
tmplinshi + 1 收藏
apang + 1 Good
Batcher + 1 感谢分享

查看全部评分

 楼主| 发表于 2014-11-28 02:00:03 | 显示全部楼层
本帖最后由 CrLf 于 2014-11-28 02:13 编辑

经过测试,发现竟然还能简写...
  1. 1>/* :
  2. @echo off
  3. echo 你好,我是 Batch
  4. cscript -nologo -e:jscript %0
  5. pause&exit
  6. */

  7. WScript.Echo('你好,我是 JScript')
复制代码
连自己都看不懂,JScript 引擎到底是怎么理解 1> 的,凭什么不报错
为了便于记忆理解,建议还是用顶楼方案吧...

PS:第一句改成 "0</* :"、"2>/* :"、"3>/* :"... "9>/* :" 都行,: 之后可以写任意内容,反正对于两个脚本而言 : 之后的部分都属于注释或标签
 楼主| 发表于 2014-11-28 02:04:37 | 显示全部楼层
应该是js/bat混编的最优方案了,就是看起来非常怪异
发表于 2014-11-28 02:16:05 | 显示全部楼层
留名
 楼主| 发表于 2014-11-28 02:23:22 | 显示全部楼层
回复 4# Demon


    兄台还没睡,是加班吗?
发表于 2014-11-28 02:25:56 | 显示全部楼层
回复  Demon


    兄台还没睡,是加班吗?
CrLf 发表于 2014-11-28 02:23


打游戏
 楼主| 发表于 2014-11-28 03:22:34 | 显示全部楼层
回复 6# Demon


    噢...看电影中
发表于 2016-3-20 13:25:25 | 显示全部楼层
回复 2# CrLf
似乎是js把注释后面的内容接到>后面去了
以下代码报错
  1. 1>/* :
  2. cscript -nologo -e:jscript "%~f0"
  3. pause
  4. exit
  5. */

  6. var x =  new Array();
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 脑洞!有道理!

查看全部评分

发表于 2020-2-10 13:17:55 | 显示全部楼层
好帖子。   学到一招
发表于 2020-7-15 08:53:22 | 显示全部楼层
非常感谢,受益匪浅
发表于 2020-7-15 14:55:06 | 显示全部楼层
还有一种

  1. @if (0)==(0) echo off
  2. cscript -nologo -e:jscript %~s0
  3. goto :EOF
  4. @end

  5. // ****************************  JavaScript  *******************************
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 nice

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 03:00 , Processed in 0.021149 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表