批处理文件字符串批量替换优化及遗留问题解决咨询
批处理脚本优化:项目文件夹名称格式化需求
背景
我是小型公司的CAD经理,日常要给新项目创建带客户专属资源的项目文件夹,这个过程繁琐还得处理多位置的文件和文件夹。我写了个依赖robocopy的批处理文件,通过输入项目信息自动生成一套标准的文件结构。现在需要优化里面的字符串处理部分,让写法更规范,同时修复现有替换逻辑的缺陷。
原始代码(存在问题的版本)
@echo off echo Enter a brief Project description: set /p projdesc= echo. REM # replace characters in description set descname="%projdesc%" set descname=%descname:the =% set descname=%descname:to =_% set descname=%descname: over =_% set descname=%descname: at =_% set descname=%descname: =% set descname=%descname:&=-% set descname=%descname:.=% set descname=%descname:"=% echo %descname% pause
输入输出示例
- 输入:
Rt.71 Bridge over Shark River→ 输出:Rt71Bridge_SharkRiver - 输入:
Bridges & Tunnels→ 原本会报错只输出Bridges,给set命令加引号修复后,输出Bridges-Tunnels
注:我保留了projdesc和descname两个变量,因为原始描述要在批处理其他地方用,修改后的字符串用来做文件夹名称的一部分。
现有问题
- 文本替换有缺陷:比如无法处理以
the或to结尾的情况,比如输入Final Project the,替换the(带空格)不会生效,结果会变成FinalProjectthe,而不是预期的FinalProject - 代码写法可以更简洁、规范
更新后的代码(已修复&符号问题)
@echo off echo Enter a brief Project description: set /p projdesc= echo. REM # replace characters in description set "descname=%projdesc%" set "descname=%descname:the =%" set "descname=%descname:to =_%" set "descname=%descname: over =_%" set "descname=%descname: at =_%" set "descname=%descname: =%" set "descname=%descname:&=-%" set "descname=%descname:.=%" echo %descname% pause
优化需求
希望能得到更高效的实现方式,同时解决现有替换逻辑的缺陷(比如处理the/to在字符串结尾的场景)
内容的提问来源于stack exchange,提问作者AndCAD
相关产品推荐
相关产品推荐

