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!
)