批处理 - 从字符串中删除最后一个字符
batch - delete last char from string
我从 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
也不起作用(可能是因为其中的 ,
)。
请帮我解决这个...
提前致谢
在没有看到完整代码和输入文件的情况下,这些可能是一些最简单的解决方案。
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
已移出设置变量的代码块,因此无需延迟扩展。
但是,也许 none 这个选项可以使用。那么你最好的选择是使用延迟扩展
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!
)
我从 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
也不起作用(可能是因为其中的 ,
)。
请帮我解决这个...
提前致谢
在没有看到完整代码和输入文件的情况下,这些可能是一些最简单的解决方案。
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
已移出设置变量的代码块,因此无需延迟扩展。
但是,也许 none 这个选项可以使用。那么你最好的选择是使用延迟扩展
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!
)