0

このコードでは、変数 'varname' 内で変数 '%a' を使用できません。

@echo of
set varname=stringhere
for /l %%a in (1,1,10) do (
    echo %varname:~1,%%a%
    ping -n 0.01 >nul
)

しかし、表示されるのは次のとおりです。

a% a% a% a% a% a% a% a% a% a%

次のように表示したいもの:

s st str stri string string stringh stringhe stringher stringhere

つまり、コードを可能な限り最適化しようとしており、変数を一度に1文字ずつ出力する関数を作成したいのですが、部分文字列を希望どおりに使用できません..

4

2 に答える 2

3
@ECHO OFF
SETLOCAL
set varname=stringhere
for /l %%a in (1,1,10) do (
    CALL echo %%varname:~0,%%a%%
)
GOTO :EOF

文字列は character から始まることに注意してください0

于 2013-11-05T07:41:55.893 に答える
2

This should do what you want, including the leading space that it looks like you have in your desired output. Remove the REM below if you want to remove the leading space.

@echo off
setlocal enabledelayedexpansion
set varname=stringhere
set "OutString="
for /l %%a in (1,1,10) do set OutString=!OutString! !varname:~0,%%a!
REM set OutString=%OutString:~1%
echo.%OutString%
pause
于 2013-11-05T05:24:59.860 に答える