batch - удалить последний символ из строки

Я получил следующую строку из jSON-файла:

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 ответ

Решение

Не видя полного кода и входного файла, это могут быть некоторые из самых простых решений.

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!
)
Другие вопросы по тегам