2015-09-11 3 views
3

Я получил следующую строку из 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 (возможно, из-за , в нем).

Пожалуйста, помогите мне с этим ...

Заранее спасибо

+0

Подсказка: 'помощь set'. – Joey

+1

манипуляция строки не работает с переменными 'for' (' %% a'), только с «нормальными» переменными ('% var%'). Внутри блока 'for' вам придется использовать [замедленное расширение] (http://stackoverflow.com/a/30284028/2152082): '! var!' – Stephan

+0

@Stephan, или 'call set';) – Joey

ответ

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! 
) 
Смежные вопросы