如何比较批处理文件中的数字变量

时间:2015-10-08 00:03:54

标签: windows batch-file if-statement cmd

为什么这不起作用?

SET FIRST=""
SET COUNT=0
FOR %%F IN (dir *.png) DO (
  IF %COUNT% NEQ 0 GOTO _skip
  SET FIRST=%%F
:_skip
  ECHO "%%F",
  SET /A COUNT=COUNT+1
)

它将FIRST设置为上一个*.png,因为IF条件失败,因为COUNT - 虽然增加了set /A,但IF %COUNT%无法工作。非常令人沮丧。

1 个答案:

答案 0 :(得分:1)

不需要计算,只需在回声线之后goto skip进行计数。

@echo off
for /f "delims=" %%f in ('dir /b *.png') do (
  rem :: you can use "echo %%f" instead of "set first=%%f"
  set first=%%f
  goto _skip
)
:_skip
echo %first%

你将两件东西混合到扫描文件夹中。

以下是第二种方式:

@echo off
for %%f in (*.png) do (
  set first=%%f
  goto _skip
)
:_skip
echo %first%
exit /b 0

如果你需要绝对计算,这是跳过计数的方法。如评论中所述,您需要启用delayedExpansion

@echo off

set count=1
for %%f in (*.png) do (
  set first=%%f
  setlocal enabledelayedexpansion
  if "!count!"=="1" goto _skip
  endlocal
  set /a count+=1
)
:_skip
echo !first!