将功能添加到Windows的预处理器';是CMD吗?
作为SQL Server DBA,我需要在工作中编写一些脚本。有时,我需要将修复脚本部署到一个非常受限的环境中,其中脚本的唯一选项可能是DOS批处理。在这样的环境中,甚至VBScript/WSH都不可能,更不用说PowerShell了。任何在DOS和Windows上编写了足够多批处理文件的人都知道,当您需要做任何过于复杂的事情时,批处理文件非常有限,而且是一个巨大的PIA。对于那些使用过unixshell脚本、Perl、Tcl、Python、Ruby等的人来说尤其如此 一个可能的解决方案是使用CMD预处理器,它可以从更强大的脚本语言中添加一些有用的功能。我曾试图找到这样一个实用程序,但到目前为止,我没有运气 这最后引出了我的问题:有人知道这样的CMD预处理器吗?如果没有,您希望在其中看到什么功能将功能添加到Windows的预处理器';是CMD吗?,windows,command-line,batch-file,preprocessor,cmd,Windows,Command Line,Batch File,Preprocessor,Cmd,作为SQL Server DBA,我需要在工作中编写一些脚本。有时,我需要将修复脚本部署到一个非常受限的环境中,其中脚本的唯一选项可能是DOS批处理。在这样的环境中,甚至VBScript/WSH都不可能,更不用说PowerShell了。任何在DOS和Windows上编写了足够多批处理文件的人都知道,当您需要做任何过于复杂的事情时,批处理文件非常有限,而且是一个巨大的PIA。对于那些使用过unixshell脚本、Perl、Tcl、Python、Ruby等的人来说尤其如此 一个可能的解决方案是使用C
附录:
如果您不熟悉预处理器的概念,请参阅 为了澄清这一点,我正在考虑一种可以添加以下功能的工具:
bpp test.batpp > post_test.bat
产生的CMD/BAT代码(post_test.BAT)
dir/b/s c:\\查找“CADR-README.htm”>\u bt001.tmp
设置/p\U BT001=<\U BT001.tmp
复制%\u BT001%\\srv01\users
设置_BT001=
del_bt001.tmp
我不确定能否正确解释您的问题。如果您在不允许运行任何脚本扩展的受控环境中运行,您将如何访问这样的预处理器
但是,关于您要求的两个特性,您可以使用.BATs。当前Windows版本中的BAT处理支持这两个功能
调用
语法,支持参数通过参数引用%1..%9,并通过使用%~
语法的扩展替换进行了增强。阅读帮助电话
FOR/F
命令中,您可以传递一个Backtick字符串以运行并捕获其输出。阅读的帮助如果您不熟悉预处理器的概念,请参阅以下Wikipedia条目:限制性部署环境正是预处理器出现的原因。在我自己的机器上,我可以用这个CMD++编写脚本,其中包括新的功能和语法。对于部署,我会像使用任何其他预处理器一样使用它:通过预处理器运行CMD++源代码,该预处理器输出普通的CMD代码。要了解backtick的作用,请参阅:我知道的一些预处理器会生成.EXE代码,您也无法运行这些代码。我知道,没有一个会导致蝙蝠。希望这里有人能帮忙。关于backtick,我相信FOR/F正是您所需要的。请尝试('date/t')中的/F%A执行回显%A'
bpp test.batpp > post_test.bat
dir /b /s c:\ | find "CADR-README.htm" > _bt001.tmp
set /p _BT001 =< _bt001.tmp
copy %_BT001% \\srv01\users
set _BT001=
del _bt001.tmp