Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
当前回答
通过使用CALL, EXIT /B, SETLOCAL和ENDLOCAL可以实现带有局部变量的子例程。
例子:
@echo off
set x=xxxxx
call :sub 10
echo %x%
exit /b
:sub
setlocal
set /a x=%1 + 1
echo %x%
endlocal
exit /b
这将打印
11
xxxxx
尽管:sub修改了x。
其他回答
整数运算:
> SET /A result=10/3 + 1
4
子字符串变量:
> set str=0123456789
> echo %str:~0,5%
01234
> echo %str:~-5,5%
56789
> echo %str:~3,-3%
3456
对于具有数字计数器的循环(输出1到10):
for /l %i in (1,1,10) do echo %i
使用空格和转义字符完全控制输出:
echo. ^<resourceDir^>/%basedir%/resources^</resourceDir^>
PAUSE
停止执行并显示如下提示:
Press any key to continue . . .
如果你想通过在Windows资源管理器中双击一个批处理来运行它,并且想实际看到输出,而不仅仅是命令窗口的一闪而过,这很有用。