[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 替换文本内容的批处理为什么有几行字不会打印出来?

这里是原始文本的其中一段
  1. [V4+ Styles]
  2. Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
  3. Style: Default,方正粗圆_GBK,37,&H00FFFFFF,&HF0000000,&H00000000,&H8C000000,0,0,0,0,100,100,2,0,1,2,1,2,30,30,10,134
  4. Style: zhu,方正粗圆_GBK,25,&H00FFFFFF,&HF0000000,&H00000000,&HF0000000,0,0,0,0,100,100,0,0,1,2,0,8,30,30,10,134
  5. Style: jp op,方正准圆_GBK,24,&H14FFF1E6,&HF0000000,&H00905A0A,&HF0000000,-1,0,0,0,100,100,2,0,1,2,0,2,30,30,5,134
  6. Style: jp ed,方正准圆_GBK,23,&H00E8F3FF,&HF0000000,&H141257D8,&HF0000000,-1,0,0,0,100,100,1,0,1,2,0,2,30,30,5,134
  7. Style: LOGO,微软雅黑,25,&H00FFFFFF,&HFF000000,&H00000000,&HFF000000,-1,0,0,0,100,100,0,0,1,1,0,2,30,30,10,1
  8. Style: chaqu,イワタ太丸ゴシック,23,&H28FFFFEE,&HF0000000,&H46B4B429,&HF0000000,0,0,0,0,100,100,0,0,1,1,0,2,30,30,10,128
  9. Style: chaquzhong,方正准圆_GBK,22,&H32FFFFFF,&HF0000000,&H640F0F0F,&HF0000000,0,0,0,0,100,100,0,0,1,1,0,7,30,30,10,134
  10. Style: jp,イワタ太丸ゴシック,25,&H6FFFFFFF,&HF0000000,&H6F000000,&HF0000000,-1,0,0,0,100,100,0,0,1,2,0,2,30,30,10,1
  11. [Events]
复制代码
想用这个代码来替换文本里面的内容,其他内容都没问题,就上面那一段会莫名其妙的都消失了
  1. for /f "delims=" %%i in (3.ass) do (
  2.     set n=%%i
  3.     call set n=%%n:xxxxxxxx=yyyyyyyyyy%%
  4.     call echo %%n%%>>4.ass
  5. )
复制代码
用type来查看文本,貌似windows也能正确读取文本,不懂为什么会这样

那是因为这些行列中有特殊字符&,要处理它就要开启变量延迟:
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (3.asss) do (
  3.   set "str=%%i"
  4.   echo !str:xxxxxxxx=yyyyyyyyyy!
  5. ))>4.asss
复制代码
***共同提高***

TOP

那是因为这些行列中有特殊字符&,要处理它就要开启变量延迟:
batman 发表于 2013-2-1 19:59



    多谢巨巨!!

TOP

俺学艺不太行啊,再来求教

按版主那样改之后 只能输入一条 替换命令,输入第二条之后就无效了,为什么
echo !str:xxxxxxxx=yyyyyyyyyy!
echo !str:xxxxxxxx=yyyyyyyyyy!(失效)
echo !str:xxxxxxxx=yyyyyyyyyy!(失效)

好像不能多输入几条,原来我那个代码是可以
call set n=%%n:xxxxxxxx=yyyyyyyyyy%%
call set n=%%n:xxxxxxxx=yyyyyyyyyy%%
call set n=%%n:xxxxxxxx=yyyyyyyyyy%%
这样多几条的

TOP

返回列表