aru*_*sun 5 windows cmd batch-file
有人可以帮我理解命令文件的语法
IF "%INPUT_PATH%"=="" (
echo Searching for latest test results in: %TEST_RESULTS%
FOR /F "delims=" %%i in ('dir /O-D /B "%TEST_RESULTS%\*.trx"') DO (
SET INPUT_PATH=%TEST_RESULTS%\%%~ni
GOTO :DoneInputPath
) )
Run Code Online (Sandbox Code Playgroud)
我得到它首先检查INPUT_PATH变量是否为空,如果它是空的然后进入内部for循环,否则我将丢失
特别
FOR /F "delims=" %%i in ('dir /O-D /B "%TEST_RESULTS%\*.trx"')SET INPUT_PATH=%TEST_RESULTS%\%%~ni您需要的大部分信息都可以在内置帮助中找到,但如果您不熟悉批量编程,则可能会令人生畏.例如,键入HELP FOR或FOR /?从命令提示符获取有关FOR命令的帮助.
说明:
FOR /F "delims=" %%i in ('dir /O-D /B "%TEST_RESULTS%\*.trx"') ...
Run Code Online (Sandbox Code Playgroud)
DIR命令列出路径中的所有*.TRX文件%TEST_RESULTS%.该/B选项提供简要格式(仅限文件名).该/O-D选项按上次修改日期降序(最新的第一个)对文件进行排序.
FOR/F命令有三种模式,具体取决于IN()子句的格式.IN()子句用单引号括起来的事实意味着FOR/F将内容视为命令,并一次处理一行命令的输出.该"delims="选项意味着没有解析成令牌(保持每个整条生产线).因此每行都迭代加载到%%i变量中.该%%i变量仅存在于FOR命令的上下文中.
SET INPUT_PATH=%TEST_RESULTS%\%%~ni
Run Code Online (Sandbox Code Playgroud)
我想你知道这个命令的大部分功能.唯一"不寻常"的方面是%%~ni语法.该语法仅将值扩展%%i为基本文件名,不带任何扩展名.
GOTO :DoneInputPath
Run Code Online (Sandbox Code Playgroud)
GOTO导致FOR循环在第一次迭代后中止.这意味着INPUT_PATH将被设置为最近修改过的*.trx文件的名称,因为它已排序到顶部.
如果GOTO不在那里,那么最终结果将是最旧的*.trx文件.
| 归档时间: |
|
| 查看次数: |
35805 次 |
| 最近记录: |