为什么此命令行代码会跳过所有其他字符?

Why does this command line code skip every other characters?

问题: 我正在努力弄清楚为什么这个命令行代码会跳过所有其他字符?

%INPUT_NAME% 变量如下所示:"Justified-S06E12-SindependenceDay-36770989-0"

下面代码的结果: 我没有返回 "Justified",而是得到类似 "Jsife061".

的结果

目标:去除第一个“-”后的所有内容,并使用结果(在本例中为 "Justified")执行搜索。

如有任何帮助,我们将不胜感激。

当前代码迭代:

::Remove any Spaces from Search Name
set HAYSTACK=%INPUT_NAME%
set HAYSTACK=%HAYSTACK: =%
echo.%HAYSTACK%


SET SEARCHNAME=
:GetUntilDash_loop

IF %HAYSTACK% EQU "" GOTO :EOF
   IF %HAYSTACK:~0,1% EQU "-" GOTO :SearchFile
      SET SEARCHNAME=%SEARCHNAME%%HAYSTACK:~0,1%
        echo.%HAYSTACK:~0,1%
      SET HAYSTACK=%HAYSTACK:~1%

GOTO :GetUntilDash_loop

:SearchFile

有一种更简单的方法可以做到这一点:

for /f "delims=-" %%i in ("%INPUT_NAME%") do set string=%%i

for 命令将您的变量分成 "tokens"。您可以定义哪个字符是分隔符(在您的情况下为 -)。如果您不告诉 for 要拿哪个令牌,它会拿第一个 - 正是您想要的。