批处理文件操作:替换文本文件某系字符写入新文件、遍历目录并进行字符串替换、拷贝文件到新目录、去掉文件扩展名
2012-12-10 21:25
453 查看
批处理替换文本中某些字符并写入新文件
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (原文件.txt) do (
set aa=%%a
set aa=!aa:要替换的字符=!
echo !aa!>>d:\新文件.txt
)
del 原文件.txt
ren "d:\新文件.txt" "原文件.txt"
pause
问题点:文件中的空行会消失,不能处理特殊字符的替换,比如!等。
用批处理替换文本的问题:查找D:\web\kk8k\web\agg这个文件夹里所有的txt文件。只要哪个txt文件里有aaaa或者bbbb就替换成cccc
递归遍历目录下的所有文件 /r第二层for
循环文件中的每一行 /f然后每行做字符替换,并将结果输入到一个文件零时文件中,然后用零时文件替换原有的文件原本以为很简单,但是批处理特别的机制,让在for下的set出了点异常,可以百度了解一下批处理的
”环境变量延迟扩展“最终还是找到了解决办法,虽然是费了不少时间。
完整代码如下:大家以后有需求可以借鉴:
@echo off ::关闭回显,不会看到执行的代码
setlocal enabledelayedexpansion
::使用!作为分隔符启用延迟的环境变量
for /r %%c in (*.html) do ( ::递归批处理文件所在的目录将每个*.html文件复制给%%c
for /f "tokens=*" %%x in (%%c) do ( ::遍历%%c文件中的没一行,将每行数据复制个%%x
set line=%%x ::将%%x赋值个line
echo !line:xh=abc! >>tmp.txt
::将替换后的行追加到tmp.txt的零时文件中
)
move tmp.txt %%c ::用零时文件替换原来处理的文件
rem echo %%c is replaced!
)
pause
缺点:用批处理来做文件替换是挺麻烦的,需要考虑特殊字符、空行等
setlocal enabledelayedexpansion
set lj=F:\sm
if not exist !lj! echo
找不到!lj!这个路径.&&pause&&exit
cd /d "!lj:"=!"
set file=heg.prm
rem if not exist *.hdf echo
找不到hdf文件&&pause&&exit
for /r F:\sm %%i in (*.hdf) do (
for /f "delims=" %%j in (%file%) do (
set a=%%j
set a_01=!a:in_put=%%~ni!
注释:~n即可去掉文件最后一个扩展名
echo !a_01!>>hegrepeat.prm
)
)
echo 完成.
Pause
把一个目录下的所有文件包括子文件夹里有很多.txt
复制到另一个目录下的一个文件夹里
例如:E:\AAA
里面有很多子文件夹,子文件夹内有很多.txt文件,全部.txt复制到E:\BBB,不要复制子文件夹,这样在E:\BBB文件夹下就可以看到txt文件,谢谢!
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (原文件.txt) do (
set aa=%%a
set aa=!aa:要替换的字符=!
echo !aa!>>d:\新文件.txt
)
del 原文件.txt
ren "d:\新文件.txt" "原文件.txt"
pause
问题点:文件中的空行会消失,不能处理特殊字符的替换,比如!等。
用批处理替换文本的问题:查找D:\web\kk8k\web\agg这个文件夹里所有的txt文件。只要哪个txt文件里有aaaa或者bbbb就替换成cccc
@echo off setlocal enabledelayedexpansion set lj=D:\web\kk8k\web\agg if not exist !lj! echo 找不到!lj!这个路径.&&pause&&exit cd /d "!lj:"=!" if not exist *.txt echo 找不到txt文档&&pause&&exit for %%i in (*.txt) do ( if exist %%i.bak echo 已经替换过.&&pause&&exit ren "%%i" "%%i.bak" ) for %%i in (*.bak) do ( set b=%%i for /f "tokens=* usebackq" %%j in ("%%i") do ( set a=%%j set a_01=!a:aaaa=cccc! set a_02=!a_01:bbbb=cccc! >>"!b:.bak=!" echo !a_02! ) ) echo 完成. pause
批处理遍历目录文件做字符串替换
在做商铺的产品页时,需要对原有的产品链接替换,因为模板有100套,每套要替换2个文件,手头也没啥好的替换工具,zendStudio虽然有在目录下各文件中查找字符串的神级功能,但是替换只能针对一个文件替换,实在不想手动一个个替换,决心整个批处理程序。对着网上别人的例子,和查找批处理命令,很快做出了个两层for循环,大意如下:第一层for递归遍历目录下的所有文件 /r第二层for
循环文件中的每一行 /f然后每行做字符替换,并将结果输入到一个文件零时文件中,然后用零时文件替换原有的文件原本以为很简单,但是批处理特别的机制,让在for下的set出了点异常,可以百度了解一下批处理的
”环境变量延迟扩展“最终还是找到了解决办法,虽然是费了不少时间。
完整代码如下:大家以后有需求可以借鉴:
@echo off ::关闭回显,不会看到执行的代码
setlocal enabledelayedexpansion
::使用!作为分隔符启用延迟的环境变量
for /r %%c in (*.html) do ( ::递归批处理文件所在的目录将每个*.html文件复制给%%c
for /f "tokens=*" %%x in (%%c) do ( ::遍历%%c文件中的没一行,将每行数据复制个%%x
set line=%%x ::将%%x赋值个line
echo !line:xh=abc! >>tmp.txt
::将替换后的行追加到tmp.txt的零时文件中
)
move tmp.txt %%c ::用零时文件替换原来处理的文件
rem echo %%c is replaced!
)
pause
缺点:用批处理来做文件替换是挺麻烦的,需要考虑特殊字符、空行等
去掉文件的扩展名:
@echo offsetlocal enabledelayedexpansion
set lj=F:\sm
if not exist !lj! echo
找不到!lj!这个路径.&&pause&&exit
cd /d "!lj:"=!"
set file=heg.prm
rem if not exist *.hdf echo
找不到hdf文件&&pause&&exit
for /r F:\sm %%i in (*.hdf) do (
for /f "delims=" %%j in (%file%) do (
set a=%%j
set a_01=!a:in_put=%%~ni!
注释:~n即可去掉文件最后一个扩展名
echo !a_01!>>hegrepeat.prm
)
)
echo 完成.
Pause
把一个目录下的所有文件包括子文件夹里有很多.txt
复制到另一个目录下的一个文件夹里
例如:E:\AAA
里面有很多子文件夹,子文件夹内有很多.txt文件,全部.txt复制到E:\BBB,不要复制子文件夹,这样在E:\BBB文件夹下就可以看到txt文件,谢谢!
以下批处理即可实现你要的功能。 @echo OFF set inputPath=E:\AAA set outputPath=E:\BBB for /f "tokens=*" %%a in ( 'dir "%inputPath%\*.txt" /s /a-d /b' ) do ( copy "%%a" "%outputPath%\" ) PAUSE
相关文章推荐
- [转]Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(二)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net_文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(二)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- [导入]Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- [导入]Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(二)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- shell遍历当前目录下的文件,用去掉文件后缀的字符串替换文件中的文本
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)(一)