如何从 CSV 变量中批量获取最短的标记?

如何从 CSV 变量中批量获取最短的标记?

这是我的代码:

set csv="Desk,House,Car,Animal,Existentialism"
for /F "tokens=* delims=," %%a in ("%csv%") do (
    set token=%~1
    echo "%token%"
)

这不起作用。它只会打印一个空字符串。

但是我需要找出最短的 token。我该怎么做?

答案1

要计数字符串并在循环中对它们进行比较,仅使用 bat 保存长度最小的字符串,请尝试以下代码:

@echo off && setlocal enabledelayedexpansion

set "_cnt=999" & for %%i in =;(Desk,House,Car,Animal,Existentialism,
     )do set "_x=" & call %:^) "%%~i" & if !_x! leq !_cnt! =;(
          set "_str=%%~i" && set /a "_cnt=!_x!" );=
%:^)
if not "%~1" == "" =;( for /f delims^=^ eol^= %%G in =;(
   '"cmd.exe /u /c echo=%~1|find/v """')do set /a "_x+=1+0"
    exit /b);= else =;(echo\String !_str! length !_cnt! & endlocal);=

答案2

我不知道如何批量执行此操作,但在 powershell 中执行此操作很容易,您也可以使用它。

$words = @("Apple","Car", "Houses")
$shortest = ($words|sort -Property length)|select -first 1

write-host "The shortest word is: $shortest"

相关内容