2017-09-22 24 views
0

如何正確地批量切割命令的結果?我寫了這樣的事情:來自命令的批量切割結果字符串

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

在我的情況「WHOAMI」返回「europe\archont"運行這個批處理後,我收到的​​3210代替"arch" 如果我做了錯誤

+1

你只能做一個環境變量的子字符串。你不能在FOR變量上做。首先將FOR變量分配給環境變量,然後執行FOR命令之外的子字符串。 – Squashman

回答

1

如果你有沒有?在您的For迴路內執行的其他功能:

@Echo Off 
For /F "Delims=" %%A In ('WhoAmI') Do Set "IAm=%%~nxA" 
Echo(%IAm:~,4% 
Timeout -1 
0
@ECHO OFF 
FOR /F "tokens=* USEBACKQ" %%F IN (`whoami`) DO (
    set "str=%%F" 
    @ECHO !str:~7,4! 
) 
ENDLOCAL 
+0

除非啓用延遲擴展,否則無法工作。 – Squashman

+0

僅通過一些描述性文字,可以使代碼只有更好的答案,才能更好地瞭解它的不同之處和/或它在做什麼。 – lit

0

而不是依靠固定字符串長度,僅僅使用\作爲分隔符:

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

在需要的時候,你可以切說:

echo %im:~,4% 
+1

我不認爲有必要規定令牌的數量或提供分隔符......請參閱我的答案_ – Compo