batch - 从字符串中删除最后一个char

时间:2015-09-11 10:08:25

标签: string batch-file batch-processing iperf

我从jSON-File中得到以下字符串:

  

39468856,

现在,我想用这些数字计算..因此,我最后要删除,

此时我使用以下代码:

for /f "skip=24 tokens=2" %%a in (text.txt) do ( 

Set %%a=%%a:~0,1%
echo %%a

SET /a b=a*2
echo %%a
@echo Uebertragen in 10s:

echo %%a bytes

)

Set %%a=%%a:~0,1%对我不起作用.. SET /a b=a*2(也许是因为,)。

请帮帮我...

提前致谢

1 个答案:

答案 0 :(得分:4)

如果没有看到完整的代码和输入文件,这些可能是一些最简单的解决方案。

for /f "skip=24 tokens=2" %%a in (text.txt) do for %%b in (%%a) do set /a "b=%%b*2"
echo %b%

此选项使用第二个for循环删除以逗号分隔的逗号。

for /f "skip=24 tokens=2" %%a in (text.txt) do 2>nul set /a "b=2*%%a"
echo %b%

在这种情况下,操作数的顺序已经改变,错误输出(逗号仍在那里)被丢弃。

如果输入文件数据允许,可能可以使用

for /f "skip=24 tokens=2 delims=, " %%a in (text.txt) do set /a "b=%%b*2"
echo %b%

将逗号作为分隔符包含在for /f中,分词器将丢弃它,逗号将不会包含在检索到的数据中。

在所有情况下,由于echo已移出设置变量的代码块,因此无需延迟扩展。

但是,也许,这些选项都不能使用。那么您最好的选择是使用延迟扩展

setlocal enabledelayedexpansion
for /f "skip=24 tokens=2" %%a in (text.txt) do ( 
    for %%b in (%%a) do set /a "b=%%b*2"
    echo !b!
)

或者,使用原始子字符串方法

setlocal enabledelayedexpansion
for /f "skip=24 tokens=2" %%a in (text.txt) do ( 
    set "b=%%a"

    rem Any of these could work
    set "b=!b:~0,-1!"
    set "b=!b:,=!"

    set /a "b*=2"
    echo !b!
)