欢迎来到代码驿站!

当前位置:首页 >

脚本与批处理合二为一

时间:2020-10-14 10:04:09|栏目:|点击:
批处理是我们管理计算机和进行一些日常工作的好帮手,随着Windows的升级,批处理能做的事情越来越多。但是还是有很多事情我们无法用批处理来完成。好在后来微软在windows中加入了Windows Script Host,我们现在可以用JScript或VBScript来完成更复杂的工作,配合WMI,可以说是无所不能。WSH脚本用CScript.exe或WScript.exe来执行,CScript.exe和WScript.exe有一些参数,设置不同的参数对运行的结果可能会有影响。我就曾发现有的脚本在使用缺省解释器 (WScript.exe)和缺省参数不能得到我想要的结果。这样当我写好一个脚本给别人使用时还得大费口舌解释该用CScript.exe还是 WScript.exe运行,该配哪些参数。怎么解决这个问题呢?有一个方法: 另写一个批处理文件,用适当的方式来运行这个脚本。不过这样我就需要有两个文件。能不能只用一个文件呢?能!将脚本和批处理融为一体!,不但可以解决上述问题,还可以同时利用批处理和WSH各自的优势。
  思路是把批处理语句放在脚本的注释里。JScript可以用/* */将一段文字作为注释,所以我选择了JScript。但/* */在批处理中是非法字符,怎么才能将其引入而没有任何不需要的错误提示呢?

  我们需要一个批处理和JScript都接受的且没什么用的语句将/* 引入。JScript中有这样的语句 @set @varname=value,而批处理中也有: set varname=value, 批处理中可以在语句前面加个@,表示此句不输出。这就是我们需要的!至于*/很好办,用 @rem */即可。
  请看下面的代码(扩展名为bat),很简单。
复制代码 代码如下:

  @set @this_call_started=1 /*
  @echo off
  @rem 允许CMD.EXE扩展功能
  @SETLOCAL ENABLEEXTENSIONS
  @rem 允许CMD.EXE延迟展开环境变量
  @SETLOCAL ENABLEDELAYEDEXPANSION
  ...
  批处理语句写在这里
  ...
  @rem "%~dpnx0" 扩展批处理文件自身的文件名为带完整路径的文件名
  @rem %* 批处理文件自身的所有参数
  @rem 重新将本文件作为脚本文件调用
  @call CScript.EXE "%~dpnx0" //Nologo //e:jscript %*
  ...
  批处理语句写在这里
  ...
  @goto end_this_call
  @rem */
  //Windows Script Start==================================================
  ...
  脚本语句写在这里
  ...
  //Windows Script end=====================================================
  /*
  :end_this_call
  ...
  批处理语句写在这里
  ...
  @set @this_call_started=
  @rem */

上一篇:docker 搭建svn服务器的教程

栏    目:

下一篇:R语言ggplot2边框背景去除的实现

本文标题:脚本与批处理合二为一

本文地址:http://www.codeinn.net/misctech/11040.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有