标题: [文本处理] [分享]批处理替换文本处理特殊字符 [打印本页]
作者: Batcher 时间: 2023-8-30 15:58 标题: [分享]批处理替换文本处理特殊字符
【问题描述】
使用for循环替换文本中的username为Zhangsan,但输出后丢失了^符号,请问该怎么处理这个字符?
test.txt文本内容如下:- Hi username! ^_^
-
- Welcome onboard!
-
- From Infra Team.
复制代码
有问题的代码:- @echo off
- setlocal enabledelayedexpansion
- (for /f "tokens=1* delims=:" %%a in ('type "test.txt" ^| findstr /n ".*"') do (
- set "line=%%b"
- if "!line!" == "" (echo,) else (
- set "line=!line:username=%username%!"
- echo,!line!
- )
- )) >> %userprofile%\Desktop\"Welcome.txt"
复制代码
作者: Batcher 时间: 2023-8-30 15:59
【解决方案】- @echo off
- cd /d "%~dp0"
- (for /f "tokens=1* delims=:" %%a in ('type "test.txt" ^| findstr /n ".*"') do (
- set "line=%%b"
- setlocal enabledelayedexpansion
- if "!line!" == "" (
- echo,
- ) else (
- echo,!line:username=%username%!
- )
- endlocal
- ))>"%userprofile%\Desktop\Welcome.txt"
复制代码
作者: Five66 时间: 2023-8-30 16:25
额,一直觉得批处理这设定挺奇怪的,都不统一
(
不开启变量延迟,用for读取文件然后set,内容中两个百分号(%)之间的不会被当成变量
相反的
开启变量延迟,用for读取文件然后set,内容中两个感叹号(!)之间的却会被当成变量
)
作者: yyz219 时间: 2023-8-30 20:32
谢谢分享哦
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |