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

时间:2015-03-19 11:18:34

标签: cmd command line

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

%INPUT_NAME%var如下所示:“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

1 个答案:

答案 0 :(得分:0)

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

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

for命令将您的变量划分为"令牌"。您可以定义哪个char是分隔符(在您的情况下为-)。如果你不告诉for要使用哪个令牌,那么它需要第一个 - 完全是你想要的。