标题: [文本处理] 批处理如何实现将多个子文件夹下指定txt文本里的指定字符串替换为其他内容? [打印本页]
作者: hoyu 时间: 2017-1-17 20:01 标题: 批处理如何实现将多个子文件夹下指定txt文本里的指定字符串替换为其他内容?
假如文件夹A下有n个子文件夹A1、A2......An,每个子文件夹中都有一个内容不同的同名文件b.txt,批处理如何实现将所有b.txt文件中的字符123替换为456?
作者: Nsqs 时间: 2017-1-17 20:31
- ' 2>nul&cls&dir /s/b/a-d "A文件夹\b.txt"|cscript -nologo -e:"vbs" "%~0"&exit
- set fso=CreateObject("Scripting.FileSystemObject")
- set ws=wsh.stdin
- do
- f=ws.readline
- read=fso.opentextfile(f).readall
- result=replace(read,"123","456")
- fso.createtextfile(f).write result
- loop until ws.atendofstream
复制代码
作者: hoyu 时间: 2017-1-17 20:51
本帖最后由 hoyu 于 2017-1-17 21:45 编辑
不会用,求指导, 执行后,什么也没发生?回复 2# Nsqs
作者: Nsqs 时间: 2017-1-17 22:45
回复 3# hoyu
修改文件夹A为你需要替换的某个文件夹然后执行后会把原来的文件全部替换
作者: hoyu 时间: 2017-1-17 22:57
谢谢,可以了
作者: hoyu 时间: 2017-1-17 23:01
回复 4# Nsqs
谢谢,可以了!
再请教一下,如果子文件夹不止一层,有两三层,或是更多,文件格式是.xml,可以批处理做到吗?
作者: Nsqs 时间: 2017-1-17 23:04
回复 6# hoyu
b.txt改成.xml 123是你要替换的,456是替换后的字符
作者: ygqiang 时间: 2017-1-18 20:03
本帖最后由 ygqiang 于 2017-1-18 21:00 编辑
回复 2# Nsqs
你好。你这个bat代码,如何与下面的代码合并成1个bat呢?- @echo off&Setlocal EnableDelayedExpansion
-
- set/p useraa=(输入数字,并按回车键):
- set useraa=user%useraa%
- echo 变量:%useraa%
- pause
复制代码
并且要将你的代码中的456,换成这个变量:%useraa%
就是说:bat代码中,手动输入1个变量值,传送给vbs。
最终实现:用手动输入的变量值,替换某个txt文件中的某个关键字。
谢谢
作者: ygqiang 时间: 2017-1-18 21:34
回复 2# Nsqs
这个代码,可以将bat的变量,传递给vbs
vbs,如何实现将txt文件中的关键字替换成变量呢?- @echo off&Setlocal EnableDelayedExpansion
-
- set/p useraa=(输入数字,并按回车键):
- set useraa=user%useraa%
- echo 变量:%useraa%
- pause
- cscript //nologo SayHello.vbs "%useraa%"
-
- pause
复制代码
vbs获取bat的变量代码如下:- ' 得到参数对象
- Set args = WScript.Arguments
- ' 如果参数个数是一个,正常运行,否则提示错误信息并退出。
- If args.Count = 1 Then
- ' 得到第一个变量参数name
- name = WScript.Arguments(0)
- ' 在标准输出中,即控制台的 通道1 输出一行文字
- WScript.StdOut.WriteLine name & ",你好。"
- WScript.Echo name
- Else
- ' 在标准错误中,即控制台的 通道2 输出一行文字
- WScript.StdErr.WriteLine "参数个数不为1,请重试。"
- ' 退出程序
- WScript.Quit
- End If
复制代码
作者: ygqiang 时间: 2017-1-18 23:05
回复 2# Nsqs
麻烦你了。已经解决。。- ' 2>nul&cls&set/p useraa=(输入数字,并按回车键):
- ' 2>nul&cls&set useraa=user%useraa%
- ' 2>nul&cls&echo 修改为:%useraa%&pause&echo %useraa%>$$
-
- ' 2>nul&cls&dir /s/b/a-d "c:\client\new.bat"|cscript -nologo -e:"vbs" "%~0"&
- ' 2>nul&cls&start "" "c:\client\new.bat" &1pause&exit
-
- set fso=CreateObject("Scripting.FileSystemObject")
- set ws=wsh.stdin
- read0=fso.opentextfile("$$").readall
- read0=left(read0,len(read0)-1)
- 'msgbox read0
-
- do
- f=ws.readline
- read=fso.opentextfile(f).readall
- result=replace(read,"user231",read0)
- fso.createtextfile(f).write result
- loop until ws.atendofstream
复制代码
作者: hoyu 时间: 2017-11-13 22:24 标题: 请问如何用批处理替换不同文件夹中指定同名文件里的指定字符串
本帖最后由 pcl_test 于 2017-11-14 00:26 编辑
文件夹A下有子文件夹a1、a2、a3.....,每个子文件夹a1、a2、a3.....中都有同名xml文件b.xml。
请问如何用bat批处理将所有b.xml文件中的文本1-2-3-4替换为a-b-c-d,修改后文件名仍为b.xml。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |