Board logo

标题: [文本处理] 批处理脚本处理文本替换时,每一行的行首如果有空格字符丢失!!!! [打印本页]

作者: peng10101010    时间: 2018-8-1 08:48     标题: 批处理脚本处理文本替换时,每一行的行首如果有空格字符丢失!!!!

rem 循环取出要处理的文件名
for /f "tokens=*" %%i in ('dir c:\test\t*.txt /b') do (
set "var=%%i"
if not !var!.==. (
rem 单个文件一行行处理,将旧字段替换成新字段
for /f "tokens=*" %%j in (!var!) do (
set "tmp=%%j"
if not !tmp!.==. (
set "tmp=!tmp:%strOld%=%strNew%!"
rem 将处理后的每一行记录追加到temp.txt文件中
echo !tmp!>>temp.txt
)
)
rem 在单个文件的每一行经过替换操作后,将处理后的文本从temp.txt临时文件剪贴到目标处理文件中(剪贴后临时文件会自动删除)
move temp.txt !var!
)
)




所有行首的空格都没有了,
有没有大神指导一下,怎么保留行首的空格呢?????????????????




suo
作者: peng10101010    时间: 2018-8-1 08:50

顶顶,呼唤老手
作者: WHY    时间: 2018-8-1 16:02

for /f "delims=" ...
作者: peng10101010    时间: 2018-8-2 09:52

回复 3# WHY


    谢谢,这个问题已经解决

请教一个find 的问题

for /f "skip=2 delims=" %%a om ('find /v "username" "%%i"') do (

set "w1=%%a"
set "w1=!w1:%strold%=%strnew%!"
set "w2"=!w1!"
echo,!w2!>>txt.tmp
)

1、这个语句中的skip是跳过整个文本的前1行,从第2行开始显示吧?
2、实际显示结果是文本中所有带有username的行都被删除成空行了,这是为什么呀?这个find命令
作者: Batcher    时间: 2018-8-2 10:52

回复 4# peng10101010


    skip跳过的是find筛选结果的前几行,而不是跳过文件的前几行。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2