从字符串中提取第一个字符

时间:2016-04-26 06:40:10

标签: windows batch-file command-line cmd

我对Windows批处理编程语法一无所知。我有一个包含用户ID的文本文件,我需要使用curl命令删除它,为此我需要提取每个用户ID的第一个字符,然后传递给curl命令。我知道curl命令需要两个变量:

  1. 'UserID' - 从文本文件中读取。
  2. 'firstCharacter' - 从用户ID中提取第一个字符。
  3. 以下是从users.txt文件中获取用户ID的代码:

    @echo off
    for /f "tokens=*" %%a in (symantecUsers.txt) do call :processline %%a
    pause
    goto :eof
    :processline
    echo %*
    goto :eof
    :eof
    

    请帮我从读取的用户ID中提取第一个字符。 感谢。

3 个答案:

答案 0 :(得分:8)

cmd.exe可以进行有限数量的字符串解析。 JosefZ给了你一个很好的起点。

C:>echo %PROCESSOR_ARCHITECTURE%
AMD64

C:>echo %PROCESSOR_ARCHITECTURE:~0,1%
A

答案 1 :(得分:2)

在批处理/命令文件中,我总是需要第一个x字符或一个字符串,并且最终得到许多功能都相同但名称不同的函数,例如getFirstChar,getFirstTwoChars等。-因此决定制作一个泛型该函数可以传递所需的字符数:

::-- getFirstXChars
:getFirstXChars
    set sValIn=%1
    set /a iNo=%2
    set vWorkVal=%%sValIn:~0,%iNo%%%
    call:getFirstX %vWorkVal% vWorkVal2
    set %3=%vWorkVal2%

:getFirstX
    set %2=%~1
goto:eof

使用语法将是

set varToTrim=ABCDEFG

call:getFirstXChars %varToTrim% 2 varToTrimAfter

@echo 1 %varToTrim%
@echo 2 %varToTrimAfter%
pause

命令文件的结果:

1 ABCDEFG
2 AB

答案 2 :(得分:1)

我刚添加了将变量“ id”设置为%% a的方法,然后使用子字符串表示法获取了第一个字符。 通过在变量名称之后和变量的最后:~start,length之前使用%处理子字符串。

@echo off
for /f "tokens=*" %%a in (output.txt) do set id=%%a & call :processline %%a
pause
goto :eof
:processline
echo %id:~0,1%
goto :eof
:eof
相关问题