|
|
发表于 2025-7-29 20:12:32
|
显示全部楼层
本帖最后由 aloha20200628 于 2025-7-29 20:14 编辑
回复 11# chishingchan
如果是为修改有严格命名规则的计算机名称,确实不必如此修理这些特殊字符,但楼主有兴趣问究,就随之跟进吧...
以下代码是用 延迟变量+for... 重写的12楼代码,运行结果会将被处理字符串中非英文字母均替换为 _,但 * 字符除外。
- @echo off &setlocal enabledelayedexpansion &set "_#?=1" &set "_#"=1"
- for %%c in ("^<", "^>", "^|", "/", "", ",", ".", ":", "-") do set "_#%%~c=1"
- set z=A/B\C*D?E"F^<G^>H^|I,J.K L:M-N
- for /f "delims=_#=" %%a in ('set _#') do set "z=!z:%%a=_!"
- echo,!z!&exit/b
复制代码 最后再给一个用 for /f 分割法替换 * 和 = 两个钉子户的示例代码(均替换为 _ 字符),用此收尾以上代码或12楼代码即可最终搞定目标字符串中的 * 字符。
- @echo off &set "zz=" &set "z=abc*xyz=123"
- :zzz
- for /f "tokens=1* delims=*=" %%a in ("%z%") do set "a=%%a" &set "z=%%b"
- set "zz=%zz%_%a%"
- if "%z%"=="" echo,%zz:~1%&exit/b
- goto :zzz
复制代码 |
评分
-
查看全部评分
|