2015-11-13 57 views
0

我想在文本之前放置一個變量在同一行上,而不會在變量改變其字符數量時向前推文本。我可以停止批量推送以下文本的文本嗎?

例如,

@echo off 
set var=1 
:start 
cls 
echo Variable: %var%   'Text' 
echo      ' ' 
pause >nul 
set /a var= %var% * 10 
goto start 

每當變量擴大時文本向右移動,是否可以將文本保持在同一位置?

回答

0

設定變量爲已知lenght(添加空格它,並以固定長度

@echo off 
set "spaces=    " 
set var=1 
:start 
cls 
set var=%var%%spaces% 
set var=%var:~0,15% 
echo Variable: %var%'Text' 
echo   %spaces:~0,15%' ' 
pause >nul 
set /a var= %var% * 10 
goto start 
0
@ECHO Off 
SETLOCAL enabledelayedexpansion 
SET "string=     Text" 
SET /a var=1 

:loop 
FOR /l %%a IN (1,1,30) DO IF "!var:~%%a,1!"=="" SET "newstr=%var%!string:~%%a!"&GOTO foundlen 
:foundlen 
ECHO %newstr% 

SET /a var*=10 
IF %var% gtr 0 GOTO loop 
GOTO :EOF 

切割假定的var的長度小於30

而異%%a直到%%a是前綴字符串的長度,然後將前綴串到另一個字符串中,刪除%%a個字符。

如果前綴字符串var可以是空的,然後

set "newstr=%string%" 
if defined var for /l ... 

我選擇強制循環通過利用整數數學的31位性質cmd終止 - 如果數目的增長> 2 ** 31然後它可能會顯示爲負值。這只是一種終止循環的方法,而不是明確檢查它是否具有最大允許長度。

相關問題