用的下面的方法
``` set filename=C:\Users\Administrator\Desktop\ccms_install_x86_windows_s1.0.3\conf\test2.xml set oldstr=pylGLZ set newstr=C:\Users\Administrator\Desktop\ccms_install_x86_windows_s1.0.3\upload setlocal enabledelayedexpansion for /f "delims=" %%a in (%filename%) do ( set aa=%%a set aa=!aa:%oldstr%=%newstr%! echo !aa!>>"%filename%.tmp" ) move "%filename%.tmp" "%filename%" pause
```
但是问题是原xml文件里面的! 和 空格全部本忽略了== 应该怎么解决? 建议直接调用VBScript中的Replace函数: Visual Basic Scripting Edition Replace 函数 请参阅 Filter 函数 要求 版本 2 返回字符串,其中指定数目的某子字符串被替换为另一个子字符串。 Replace(expression, find, replacewith[, compare[, count[, start]]]) 参数 expression 必选项。字符串表达式包含要替代的子字符串。 Find 必选项。被搜索的子字符串。 Replacewith 必选项。用于替换的子字符串。 Start 可选项。expression 中开始搜索子字符串的位置。如果省略,默认值为 1。在和count 关联时必须用 count 可选项。执行子字符串替换的数目。如果省略,默认值为 -1,表示进行所有可能的替换。在和 start 关联时必须用。 Compare 可选项。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。如果省略,缺省值为 0 ,这意味着必须进行二进制比较。 设置 compare 参数可以有以下值: 常数 值 描述 vbBinaryCompare 0 执行二进制比较。 vbTextCompare 1 执行文本比较。 返回值 Replace 返回以下值: 如果 Replace 返回 expression 为零长度 零长度字符串 ("")。 expression 为 Null 错误。 find 为零长度 expression 的副本。 replacewith 为零长度 expression 的副本,其中删除了所有由 find 参数指定的内容。 start > Len(expression) 零长度字符串。 count 为 0 expression 的副本。 说明 Replace 函数的返回值是经过替换(从由 start 指定的位置开始到 expression 字符串的结尾)后的字符串,而不是原始字符串从开始至结尾的副本。 下面的示例利用 Replace 函数返回字符串: Dim MyString MyString = Replace("XXpXXPXXp", "p", "Y") '二进制比较从字符串左端开始。返回 "XXYXXPXXY"。 MyString = Replace("XXpXXPXXp", "p", "Y", '文本比较从第三个字符开始。返回 "YXXYXXY"。3,, -1, 1) 要求 版本 2 请参阅 Filter 函数
bat调用vbs举例:
@echo off echo set fso = CreateObject("Scripting.FileSystemObject") >tmp.vbs echo set a = fso.CreateTextFile("yyyymmddhh.txt", True) >>tmp.vbs echo s=FormatDateTime(DateAdd("h",-1,Now)) >>tmp.vbs echo a.WriteLine(Mid(s,1,4)+Mid(s,6,2)+Mid(s,9,2)+Mid(s,12,2)) >>tmp.vbs echo a.Close >>tmp.vbs echo set a=Nothing >>tmp.vbs echo set fso=Nothing >>tmp.vbs call tmp.vbs del tmp.vbs >NUL 2>NUL for /F %%s in (yyyymmddhh.txt) do set YYYYMMDDHH=%%s del yyyymmddhh.txt >NUL 2>NUL echo %YYYYMMDDHH%
|