Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
当前回答
CHOICE命令提示用户在多个选项中选择一个(通过单个按键)
@echo off
echo Please choose one of the following options
echo 1. Apple
echo 2. Orange
echo 3. Pizza
echo a, b, c. Something else
choice /c:123abc /m "Answer?"
set ChoiceLevel=%ErrorLevel%
echo Choice was: %ChoiceLevel%
%ChoiceLevel%将是选中的第n个选项(在上面的例子中,b=5)。
更多详情请访问SS64.com上的CHOICE参考页面。
其他回答
没有编辑器,需要创建一个批处理文件?
copy con test.bat
只需输入命令,按enter键输入新行。 按Ctrl-Z和Enter关闭文件。
将输出重定向到控制台,即使批处理的输出已经通过> con语法重定向到文件。
例子: foo.cmd:
echo a
echo b > con
调用:
foo.cmd > output.txt
这将导致“a”输出到output.txt,而“b”输出到控制台。
列出所有驱动器:
fsutil fsinfo drives
要获取当前日期/时间用于日志文件等,我在批处理文件中使用这个:
for /f "usebackq tokens=1,2,3,4,5,6,7 delims=/:. " %%a in (`echo %DATE% %TIME%`) do set NOW=%%d%%b%%c_%%e%%f%%g
set LOG=output_%NOW%.log
使用&::的内联注释。
:: This is my batch file which does stuff.
copy thisstuff thatstuff &:: We need to make a backup in case we screw up!
:: ... do lots of other stuff
这是如何工作的呢?这是一个丑陋的黑客。&是命令分隔符,大致近似于;UNIX shell。::是另一个丑陋的黑客,有点像REM语句。最终结果是执行命令,然后执行一个什么都不做的命令,从而近似于注释。
这并不是在所有情况下都有效,但它通常足够有用。