Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
当前回答
一个非常古老(大约1990年)的技巧来获得环境变量的总大小:
set > test
dir test
del test
其他回答
命令分隔符:
cls & dir
copy a b && echo Success
copy a b || echo Failure
在第二行,&&之后的命令仅在第一个命令成功时运行。
在第3行,||之后的命令仅在第一个命令失败时运行。
为了从脚本内部解析stdin,你需要使用For和FIND命令:
for /f "tokens=*" %%g in ('find /V ""') do (
:: do what you want with %%g
echo %%g
)
创建一个空文件:
> copy nul filename.ext
隐藏交互式批处理脚本的输入:
@echo off
echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5>in.com
set /p secret_password="Enter password:"<nul
for /f "tokens=*" %%i in ('in.com') do (set secret_password=%%i)
del in.com
没有编辑器,需要创建一个批处理文件?
copy con test.bat
只需输入命令,按enter键输入新行。 按Ctrl-Z和Enter关闭文件。