批处理命令中如何把一行替换并换行
内容:A文件夹为根目录,根目录下有20款用手机型号命名的文件夹,每一个手机型号文件夹里都有一个ELABEL.INI文件。ELABEL.INI内容如下:[M1]合约,手机信...
内容:A文件夹为根目录,根目录下有20款用手机型号命名的文件夹,每一个手机型号文件夹里都有一个ELABEL.INI 文件。
ELABEL.INI 内容如下:
[M1]合 约,手机信息,服 务[P64][ZFF0000]1298型 号:HTC T329W屏 幕:4.0寸IPS 800x480 处理器:1024MHz 双核 内 存:ROM 4GB,RAM 768MB摄像头:后500万网 络:GSM+WCDMA双卡双待系 统:Android OS 4.0
问:现在我要在 “ 型 号: " 前面加上一行内容 [ZFF0000] ,要如何批量操作,修改替换我已经会操作,现在最大的问题是:我要在命令行里实现一个 “换行” 符号,要怎么操作???
修改后的样板要如下样式:
备注:以下两种代码,是可以正常修改替换内容的命令,最大的难题是,我无法插入换行回车符号。
下图为VBS的命令代码:
Set WshShell = CreateObject("Wscript.Shell")WshShell.Run "cmd /c dir /s/b *.ini > list.txt",vbHideWscript.Sleep 1000sFile = "list.txt"Set objFSO = CreateObject("Scripting.FileSystemObject")Set oFile = objFSO.OpenTextFile(sFile,1)Do While Not oFile.AtEndOfStream strLine = oFile.ReadLine If Len(strLine) > 0 Then Set File = objFSO.OpenTextFile(strLine, 1) aryLines = File.ReadAll File.Close aryLines = Replace(aryLines, "型","[ZFF0000]型") Set File = objFSO.OpenTextFile(strLine, 2) File.Write aryLines File.Close End IfLoopoFile.CloseobjFSO.DeleteFile sFileSet objFSO = Nothing
下面为.bat命令的代码
@echo offfor /f "delims=" %%i in ('dir /s/b *.ini') do ( for /f "delims=" %%a in ('type "%%~fi"') do ( set "foo=%%a" call,set foo=%%foo:型=[ZFF0000]型%% call,echo/%%foo%%>>"%%~fi._")move "%%~fi._" "%%~fi")pause
以上两种代码修改后的内容都不是正确的,不是理想的。如下图
由图中可以看到 [ZFF0000] 和 “型号” 是连着的,不是分行的。
我想要的结果是如下图所示
[ZFF0000] 和 “型号”是每一行一个内容的,这才是我想要的结果。
总结:想问问各位大神们,有谁知道如何在上面的代码里实现换行处理。我在网上查了很多资料都找不到答案? 展开
ELABEL.INI 内容如下:
[M1]合 约,手机信息,服 务[P64][ZFF0000]1298型 号:HTC T329W屏 幕:4.0寸IPS 800x480 处理器:1024MHz 双核 内 存:ROM 4GB,RAM 768MB摄像头:后500万网 络:GSM+WCDMA双卡双待系 统:Android OS 4.0
问:现在我要在 “ 型 号: " 前面加上一行内容 [ZFF0000] ,要如何批量操作,修改替换我已经会操作,现在最大的问题是:我要在命令行里实现一个 “换行” 符号,要怎么操作???
修改后的样板要如下样式:
备注:以下两种代码,是可以正常修改替换内容的命令,最大的难题是,我无法插入换行回车符号。
下图为VBS的命令代码:
Set WshShell = CreateObject("Wscript.Shell")WshShell.Run "cmd /c dir /s/b *.ini > list.txt",vbHideWscript.Sleep 1000sFile = "list.txt"Set objFSO = CreateObject("Scripting.FileSystemObject")Set oFile = objFSO.OpenTextFile(sFile,1)Do While Not oFile.AtEndOfStream strLine = oFile.ReadLine If Len(strLine) > 0 Then Set File = objFSO.OpenTextFile(strLine, 1) aryLines = File.ReadAll File.Close aryLines = Replace(aryLines, "型","[ZFF0000]型") Set File = objFSO.OpenTextFile(strLine, 2) File.Write aryLines File.Close End IfLoopoFile.CloseobjFSO.DeleteFile sFileSet objFSO = Nothing
下面为.bat命令的代码
@echo offfor /f "delims=" %%i in ('dir /s/b *.ini') do ( for /f "delims=" %%a in ('type "%%~fi"') do ( set "foo=%%a" call,set foo=%%foo:型=[ZFF0000]型%% call,echo/%%foo%%>>"%%~fi._")move "%%~fi._" "%%~fi")pause
以上两种代码修改后的内容都不是正确的,不是理想的。如下图
由图中可以看到 [ZFF0000] 和 “型号” 是连着的,不是分行的。
我想要的结果是如下图所示
[ZFF0000] 和 “型号”是每一行一个内容的,这才是我想要的结果。
总结:想问问各位大神们,有谁知道如何在上面的代码里实现换行处理。我在网上查了很多资料都找不到答案? 展开
1个回答
展开全部
@echo off&setlocal enabledelayedexpansion
for %%i in (*.ini) do (
(for /f "delims=" %%a in ('type "%%~fi"') do (
set "foo=%%a"
if "!foo:~,1!"=="型" echo [ZFF0000]
echo,%%a
))>tmp
move /y tmp "%%i"
)
添加内容[ZFF0000]如果固定的,可参考。
追问
很好,试了可以,再问一下,它这个换行符是怎么产生的,如果我有其它的文章要用到换行的话,可以根据什么来换行。难道是上面代码中的 echo ?不大理解?多之前也用过echo,不知是否有什么限制,要在特定的代码后才能运行?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询