脚本与批处理合二为一

所属分类: 脚本专栏 / 其它 阅读数: 1197
收藏 0 赞 0 分享
批处理是我们管理计算机和进行一些日常工作的好帮手,随着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 */
更多精彩内容其他人还在看

利用命令进行简单的增量文件夹备份(win/linux)

这两天突然看到一个需求点,需要实现增量备份的功能,找了一些资料,记录一下如下命令,该命令可以利用命令行进行简单的增量备份功能
收藏 0 赞 0 分享

Swift语言与Applescript的区别?AppleScript的发展状况?

这篇文章主要介绍了Swift语言与Applescript的区别?AppleScript的发展状况? ,需要的朋友可以参考下
收藏 0 赞 0 分享

git eclipse 插件的安装

通常我们开发项目用ecliipse的比较多。所以在这把eclipse的Git插件安装和使用,需要的朋友可以参考下
收藏 0 赞 0 分享

软件测试方法大汇总

本文主要介绍几种软件测试方法,这里对软件测试做了几种分类和汇总,在做软件测试的时候可以用适当的方法,有需要的小伙伴可以参考下
收藏 0 赞 0 分享

R语言利用loess如何去除某个变量对数据的影响详解

这篇文章主要给大家介绍了关于R语言利用loess去除某个变量对数据的影响的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
收藏 0 赞 0 分享

linux下直接拷贝新版本R的方法

下面小编就为大家分享一篇linux下直接拷贝新版本R的方法,非常简单,具有很好的参考价值,希望对大家有所帮助
收藏 0 赞 0 分享

基于canvas剪辑区域功能实现橡皮擦效果

这篇文章主要介绍了基于canvas剪辑区域功能实现橡皮擦效果,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

bat脚本输出日志的方法

这篇文章主要介绍了bat脚本输出日志的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

详解npm脚本和package.json

npm是前端开发广泛使用的包管理工具,它让js开发者分享、复用代码更方便。这篇文章主要介绍了npm脚本和package.json,需要的朋友可以参考下
收藏 0 赞 0 分享

脚本

脚本
收藏 0 赞 0 分享
查看更多