为什么此命令行代码会跳过所有其他字符?
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
要拿哪个令牌,它会拿第一个 - 正是您想要的。
问题: 我正在努力弄清楚为什么这个命令行代码会跳过所有其他字符?
%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
要拿哪个令牌,它会拿第一个 - 正是您想要的。