如何在批处理中正确剪切命令的结果?我写了类似的东西:
@ECHO OFF
FOR /F "tokens=* USEBACKQ" %%F IN (`whoami`) DO (
@ECHO %%F%:~7,4%
)
ENDLOCAL
在我的情况下,“whoami”返回“europe\archont"
。运行此批处理后,我收到"europe\archont:~7,4"
而不是"arch"
我错在哪里?
答案 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%