从命令批量切割结果字符串

时间:2017-09-22 15:45:28

标签: batch-file cmd

如何在批处理中正确剪切命令的结果?我写了类似的东西:

@ECHO OFF
FOR /F "tokens=* USEBACKQ" %%F IN (`whoami`) DO (
    @ECHO %%F%:~7,4%
)
ENDLOCAL

在我的情况下,“whoami”返回“europe\archont"。运行此批处理后,我收到"europe\archont:~7,4"而不是"arch" 我错在哪里?

3 个答案:

答案 0 :(得分:1)

如果在For循环中没有其他功能可以执行:

@Echo Off
For /F "Delims=" %%A In ('WhoAmI') Do Set "IAm=%%~nxA"
Echo(%IAm:~,4%
Timeout -1

答案 1 :(得分:0)

@ECHO OFF
FOR /F "tokens=* USEBACKQ" %%F IN (`whoami`) DO (
    set "str=%%F"
    @ECHO !str:~7,4!
)
ENDLOCAL

答案 2 :(得分:0)

而不是依赖于固定的字符串长度,只需使用\作为分隔符:

for /f "tokens=2 delims=\" %%F in ('whoami') do set "im=%%F"

如果需要,你可以减少:

echo %im:~,4%