BAT批处理如何一次性读取输入串逐位提取变量重组指定格式输出
批处理15位字符串自动转换脚本优化
实现效果
无需逐位输入单个字符,一次性输入完整15位字符串后,自动按规则提取字符、拼接固定标识与分隔符输出,匹配示例规则:
- 输入值:
123456789012345 - 期望输出:
xy 1z 32 54 76 98 10 32 54
优化后完整代码
@echo off chcp 65001 >nul :reinput set "full_str=" set /p "full_str=请输入15位完整字符串: " :: 校验输入长度是否为15位 if not defined full_str echo 输入不能为空,请重新输入&goto reinput if not "%full_str:~14,1%"=="" ( if "%full_str:~15,1%"=="" goto parse ) echo 输入长度不符合要求,请输入正好15位的字符串&goto reinput :parse :: 按位提取字符(批处理字符串索引从0开始计数) set "p1=%full_str:~0,1%" set "p2=%full_str:~1,1%" set "p3=%full_str:~2,1%" set "p4=%full_str:~3,1%" set "p5=%full_str:~4,1%" set "p6=%full_str:~5,1%" set "p7=%full_str:~6,1%" set "p8=%full_str:~7,1%" set "p9=%full_str:~8,1%" set "p10=%full_str:~9,1%" set "p11=%full_str:~10,1%" set "p12=%full_str:~11,1%" set "p13=%full_str:~12,1%" set "p14=%full_str:~13,1%" set "p15=%full_str:~14,1%" :: 按规则拼接输出 echo xy %p1%z %p3%%p2% %p5%%p4% %p7%%p6% %p9%%p8% %p11%%p10% %p13%%p12% %p15%%p14% pause
代码说明
- 仅保留1次输入提示,一次性接收完整字符串,省去逐位输入的繁琐操作
- 内置输入长度校验,输入为空、长度不足15位、超过15位时都会提示重新输入,避免字符截取异常
- 用批处理原生字符串截取语法逐位拆分字符,不需要额外依赖工具,兼容所有Windows系统默认cmd环境
- 拼接逻辑和原有脚本完全一致,输出格式不会出现偏差,测试输入
123456789012345时可直接得到目标输出结果。
内容的提问来源于stack exchange,提问作者Nookey
相关产品推荐
相关产品推荐

