2017-09-22 16 views
0

正しくコマンドから結果をバッチで正しく切り取る方法はありますか?このバッチを実行した後、私は​​3210の代わりに、私は間違いをした"arch" を受ける「にwhoami」は「europe\archont"を返す私の場合コマンドからバッチ処理結果の文字列を

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

+1

あなたが唯一の環境変数のサブ文字列を行うことができます。 FOR変数では実行できません。最初にFOR変数を環境変数に割り当て、次にFORコマンドの外部で部分文字列を実行します。 – Squashman

答えて

1

あなたがいない持っている場合:私はそのようなことを書きましたの? Forループ内でさらに機能します:

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