我听说过各种不同的批处理命令,比如echo。但是那时有不同的开关,如/ p或/等。这个星球上有什么区别? 和有什么区别 !变量!和%变量%???和我 请告诉我,谁知道可能有什么优势。 感谢
答案 0 :(得分:1)
有echo
和dir
以及findstr
等命令。
对于某些命令,有switches
可以修改命令的运行方式。
dir
将生成目录列表
dir /od
将按照上次修改文件/目录的日期顺序生成目录列表。
一个表现良好的命令是自我记录的;
commandname /?
将显示文档。
这个原则在很大程度上得到了作为操作系统和第三方提供的面向控制台命令的一部分提供的内置命令的支持。
BUT
其他操作系统使用-
或--
而不是/
,当这些命令从这些操作系统“移植”到Windows时,它们仍然需要备用开关指示符。这是一个逐案了解的问题。
批处理文件中的变量值基本上使用%var%
检索。有两个例外 - 提供给批处理或子例程的参数值由%n
(其中n = 1-9)和%%x
访问,其中x
是metavariable
在for
循环中(即循环控制变量)。奇怪的是,%%x
这是批处理区分大小写的少数情况之一。
当批处理执行例程时,它首先parses
该行(检查其有效性)然后executes
它。逻辑线可以是许多物理线长。作为解析过程的一部分,任何%var%
都会被解析行时该变量的值替换。
因此,在for
循环中,%var%
被其parse-time
处的值替换,因此如果循环更改%var%
,var
似乎会有一个常量值。要在循环更改时访问循环中!var!
的当前值,请使用!var!
但以使用setlocal enabledelayedexpansion
语法,您需要先前执行yaml_emit()
。
答案 1 :(得分:0)
在命令提示符下键入Help
。
对于每个命令类型help command
(例如help dir
)或command /?
(例如dir /?
)
对于具有reg
命令类型reg /?
等子模式的命令,然后是reg query /?
。
请参阅Trouble with renaming folders and sub folders using Batch了解!var!
%variablename%a内置或用户设置环境变量
!VARIABLENAME!用户设置在执行时扩展的环境变量,使用SetLocal EnableDelayedExpansion命令
进行转换
请参阅setlocal /?
和for /?
,了解何时以及为何要这样做。