Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
当前回答
cmd.exe本身的/c参数,告诉它运行然后执行这些命令。
我曾经发现自己经常这样做:
win+r, cmd RETURN, ping google.com RETURN
但现在我只知道
win+r, cmd /c ping google.com返回
快得多。如果您正在使用pstools,并且希望使用psexec在远程机器上执行一些命令行功能,那么这也很有帮助。
EDIT: /k工作方式相同,但保持提示打开。这可能经常会派上用场。
其他回答
cmd.exe本身的/c参数,告诉它运行然后执行这些命令。
我曾经发现自己经常这样做:
win+r, cmd RETURN, ping google.com RETURN
但现在我只知道
win+r, cmd /c ping google.com返回
快得多。如果您正在使用pstools,并且希望使用psexec在远程机器上执行一些命令行功能,那么这也很有帮助。
EDIT: /k工作方式相同,但保持提示打开。这可能经常会派上用场。
现在很多人使用GOTO:EOF来终止他们的批处理文件,但你也可以使用EXIT /B来达到这个目的。
使用EXIT /B的优点是你可以在EXIT /B之后添加一个错误级别,它将退出该错误级别。
继续行:
call C:\WINDOWS\system32\ntbackup.exe ^
backup ^
/V:yes ^
/R:no ^
/RS:no ^
/HC:off ^
/M normal ^
/L:s ^
@daily.bks ^
/F daily.bkf
PAUSE
停止执行并显示如下提示:
Press any key to continue . . .
如果你想通过在Windows资源管理器中双击一个批处理来运行它,并且想实际看到输出,而不仅仅是命令窗口的一闪而过,这很有用。
子例程(输出42):
@echo off
call :answer 42
goto :eof
:do_something
echo %1
goto :eof
子例程返回一个值(输出0、1、2,等等):
@echo off
setlocal enableextensions enabledelayedexpansion
call :seq_init seq1
:loop1
if not %seq1%== 10 (
call :seq_next seq1
echo !seq1!
goto :loop1
)
endlocal
goto :eof
:seq_init
set /a "%1 = -1"
goto :eof
:seq_next
set /a "seq_next_tmp1 = %1"
set /a "%1 = %seq_next_tmp1% + 1"
set seq_next_tmp1=
goto :eof