这是我的代码:
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"