Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?

指南:

每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包

澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。

(请参见:Windows批处理文件:.bat vs .cmd?)


当前回答

就像上面一样,使用CALL, EXIT /B, SETLOCAL和ENDLOCAL,你可以用局部变量和返回值来实现函数。

例子:

@echo off

set x=xxxxx
call :fun 10
echo "%x%"
echo "%y%"
exit /b

:fun
setlocal
set /a y=%1 + 1
endlocal & set x=%y%
exit /b

这将打印:

"11"
""

y变量永远不会离开局部作用域,但由于CMD一次解析一行的方式,您可以将值提取到父作用域的x变量中。

其他回答

cmd.exe本身的/c参数,告诉它运行然后执行这些命令。

我曾经发现自己经常这样做:

win+r, cmd RETURN, ping google.com RETURN

但现在我只知道

win+r, cmd /c ping google.com返回

快得多。如果您正在使用pstools,并且希望使用psexec在远程机器上执行一些命令行功能,那么这也很有帮助。

EDIT: /k工作方式相同,但保持提示打开。这可能经常会派上用场。

而不是用REM或::行乱写脚本,我在每个脚本的顶部执行以下操作:

@echo OFF
goto :START

Description of the script.

Usage:
   myscript -parm1|parm2 > result.txt

:START

注意如何使用管道和重定向字符而不转义它们。

子字符串变量:

> set str=0123456789
> echo %str:~0,5%
01234
> echo %str:~-5,5%
56789
> echo %str:~3,-3%
3456

文件名为“YYYY-MM-DD HH:MM:SS.txt”的例子

回波测试>“%日期:~ 0,4% - %日期:~ 5 2% - %日期:~ 8,2% %时间:~ 0,2% _ %时间:~ 3,2% _ %时间:~ 6,2% . txt”

我使用颜色来指示我的脚本是否成功,失败,或者通过改变文本和背景的颜色来需要一些输入。当你有一些机器在你视野范围内,但距离很远时,它真的很有帮助

颜色XY

其中X和Y为从0到F的十六进制值,其中X -背景,Y -文本,当X = Y时颜色不会改变。

颜色Z

更改文本颜色为“Z”并设置黑色背景,“颜色0”将不起作用

颜色的名字叫

颜色吗?

这里有一个技巧,我用它来连续运行My Nant Build脚本,而不必一遍又一遍地单击批处理文件。

:CODELINE
NANT.EXE -buildfile:alltargets.build -l:build.log build.product
@pause
GOTO :CODELINE

在您的解决方案完成构建之后,它将被暂停。然后,如果您按下任何键,它将再次重新运行构建脚本。我必须说非常方便。