我对Windows批处理编程语法一无所知。我有一个包含用户ID的文本文件,我需要使用curl命令删除它,为此我需要提取每个用户ID的第一个字符,然后传递给curl命令。我知道curl命令需要两个变量:
以下是从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中提取第一个字符。 感谢。
答案 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