batch-file - 批处理文件中的动态子字符串
问题描述
我的批处理文件的代码摘录:
set stringOne=ABCDEF
echo %stringOne:~2,3%
这个输出是CDE
如何动态echo
输出起始索引和所需输出长度?
set stringOne=ABCDEF
set start=2
set len=3
解决方案
你需要两层变量扩展。这可以通过延迟扩展或通过call
:
@echo off
setlocal enabledelayedexpansion
set "string=ABCDEFGH"
set "start=2"
set "len=3"
echo A with delayed expansion: !string:~%start%,%len%!
call echo A with using 'call': %%string:~%start%,%len%%%
FOR /F %%G IN ('dir /b "%~f0"') DO (
set /A "newStart=!Start!+2"
call echo B with 'call' and delayed : %%string:~!newStart!,!len!%%
call call echo B with double-'call': %%%%string:~%%newStart%%,%len%%%%%
)
FOR /F %%G IN ('dir /b "%~f0"') DO call :output
goto :eof
:output
set /A "newStart=Start+2"
echo C with subroutine and delayed expansion: !string:~%newStart%,%len%!
call echo C with subroutine andusing 'call': %%string:~%newStart%,%len%%%
goto :eof
编辑以匹配您的评论。您需要第三层扩展。我用一些不同的方法扩展了代码。
(顺便说一句:请不要在评论中发布代码,这几乎是不可能阅读的。如果您的问题发生了变化,最好下次再问一个后续问题)
推荐阅读
- javascript - 使用 javascript 只阻止一个事件
- django - Heroku 无法识别模块 WSGI
- c# - 如何在 C# 的 COM PORT 中发送 ASCII?
- shell - 如何在 Powershell 中断开网络驱动器?
- coldfusion - 如何在 ColdFusion 中为 Google Maps 地理编码设置 API 密钥
- reactjs - 如何在反应本机导航中暂停启动屏幕 3 秒
- cordova - 在 android 和 ios 中将每月订阅切换为每年订阅
- coordinates - 用于获取道路上两个位置之间坐标的 API
- python - 如何根据特定规则将列从一个数据框添加到另一个数据框
- r - 避免科学记数法x轴ggplot