本帖最后由 pcl_test 于 2017-11-7 12:02 编辑
如 abc文件夹内有 N+个txt文本。
要求每个文本逐个修改替换,替换内容自己输入。
以下为 apang 提供的代码,本人不太会VBS所以无从下手。
一直想写一个这样的BAT 但是好像就凭逐个文件处理这条,似乎不太可能了。。。- Dir =".\==NC=="
- Set FSO = CreateObject("Scripting.FileSystemObject")
- For Each file in FSO.GetFolder(Dir).Files
- Ext = FSO.GetExtensionName(file)
- If Lcase(Ext) = "nc" Then
- RegEx FSO.OpenTextFile(file,1).ReadAll
- End If
- If Lcase(Ext) = "txt" Then
- RegEx FSO.OpenTextFile(file,1).ReadAll
- End If
- If Lcase(Ext) = "ncd" Then
- RegEx FSO.OpenTextFile(file,1).ReadAll
- End If
- If Lcase(Ext) = "pim" Then
- RegEx FSO.OpenTextFile(file,1).ReadAll
- End If
- Next
- Sub RegEx(Text)
- Set Re = New RegExp
- Re.Global = True
- Re.Pattern = "[Ss][1-9]\d*"
- If Not Re.Test(Text) Then Exit Sub
- For Each Match in Re.Execute(Text)
- ReDim PreServe ar(n)
- ar(n) = Match : n = n + 1
- Next
- For i = 0 to Ubound(ar) -1
- For j = i + 1 to Ubound(ar)
- If CInt(Mid(ar(i),2)) > CInt(Mid(ar(j),2)) Then
- Tmp = ar(i) :ar(i) = ar(j) :ar(j) = Tmp
- End If
- Next
- Next
- a = InputBox("☆最小S值:" & ar(0) & " -> ★最大S值:" & ar(UBound(ar)) & _
- vbLf & vbLf & "=========●输入替换后的S值:=========",file.Name,"S4500")
- If IsEmpty(a) Then Exit Sub
- If a = "" Then a = "S4500"
- FSO.OpenTextFile(file,2).Write Re.Replace(Text,a)
- End Sub
复制代码 参考
把查找的字符串直接固定为“==DK_T==“
替换为 G43T1 红色字体固定就行 后面的“1”设为在输入框输入数字1~999 就行。
把显示提示保留。就改成 =====请输入刀库编号 G43T编号 [1~999]=====。
大概就这样。
会bat的也可以试试。 |