标题: [文本处理] 请教批处理根椐文本参数添加指定内容 [打印本页]
作者: 阿一呐法 时间: 2022-7-22 10:59 标题: 请教批处理根椐文本参数添加指定内容
同一目录下有四个文本
1.txt
1.ini
2.txt
2.ini
文本1.ini的内容如下
参数a
参数b
参数c
参数d
文本2.ini的内容如下
参数a
参数b
参数c
参数d
其中文本1.txt 及 文本2.txt 未知
现在需要先提取所有本目录下的 .txt 格式的文件名,并输出到3.txt,其内容如下所示
1
2
如果文本 1.ini 且 文本 2.ini 都没有 "参数c" , 则文本3.txt的每行添加空格,再加指定字符串xxx,如下所示
1 xxx
2 xxx
如果文本 1.ini 且 文本 2.ini 都有 "参数c" , 则文本3.txt的每行添加空格,再加指定字符串yyy,如下所示
1 yyy
2 yyy
如果文本 1.ini 有 "参数c" , 文本 2.ini 没有 "参数c" , 则文本3.txt输出,如下所示
1 xxx
2 yyy
如果文本 1.ini 没有 "参数c" , 文本 2.ini 有 "参数c" , 则文本3.txt输出,如下所示
1 yyy
2 xxx
作者: HOPE2021 时间: 2022-7-22 13:08
回复 1# 阿一呐法
这个代码实测通过,请您看看可不可以- @Echo Off
- Chcp 936 > Nul %= 请确保您的文本是ANSI编码,如果含有Unicode字符,请把936改成65001 =%
- @Goto :Main %= 跳转到Main标签 =%
-
- :Main
- Cd /D "%Cd%\Files" %= 您可以把它改成您自己需要的目录 =%
-
- %= 设置参数3 =%
- Set Var=参数c
-
- %= 格式化参数3 =%
- Set Var=%Var:"=""%
-
- %= 您的XXX和YYY文本 =%
- Set Var1=xxx
- Set Var2=yyy
-
- %= 删除3.Txt =%
- If Exist 3.Txt Del 3.Txt
-
- %= 清空3.Stf的内容 =%
- Cd. > 3.Stf
-
- %= 遍历所有Txt文档 =%
- For /F %%I in ('Dir /B *.Txt') Do (
- >> 3.Stf Echo.%%~nI
- )
-
- %= 将3.Stf改名3.Txt =%
- Ren 3.Stf 3.Txt
-
- %= 判断1.Ini中是否有参数3 =%
- Find 1.Ini "%Var%" > Nul 2> Nul
- Set ErrorLevel1=%ErrorLevel%
-
- %= 判断2.Ini中是否有参数3 =%
- Find 2.Ini "%Var%" > Nul 2> Nul
- Set ErrorLevel2=%ErrorLevel%
-
- %= 先运算,可以防止后续If 嵌套 =%
- Set /A ErrorLevel3=%ErrorLevel1%+%ErrorLevel2%
- Set /A "ErrorLevel4=%ErrorLevel1%<<%ErrorLevel2%"
-
- If %ErrorLevel3% Equ 2 (
- %= 都没有 =%
- (
- Echo.1 %Var1%
- Echo.2 %Var1%
- Rem 覆盖,如果要追加内容,请将>改为>>
- ) > 3.Txt
- @Goto :Next
- ) Else If %ErrorLevel3% Equ 0 (
- %= 都有 =%
- (
- Echo.1 %Var2%
- Echo.2 %Var2%
- Rem 覆盖,如果要追加内容,请将>改为>>
- ) > 3.Txt
- @Goto :Next
- )
-
- If %ErrorLevel4% Equ 0 (
- %= 1.Ini有,2.Ini没有 =%
- (
- Echo.1 %Var1%
- Echo.2 %Var2%
- Rem 覆盖,如果要追加内容,请将>改为>>
- ) > 3.Txt
- @Goto :Next
- ) Else If %ErrorLevel4% Equ 1 (
- %= 1.Ini没有,2.Ini有 =%
- (
- Echo.1 %Var2%
- Echo.2 %Var1%
- Rem 覆盖,如果要追加内容,请将>改为>>
- ) > 3.Txt
- @Goto :Next
- )
- @Goto :Next
-
- :Next
- %= 暂停 =%
- %=此处可以增加您的代码=%
- Echo.已完成,请按任意键退出……
- Pause > Nul
- @Exit /B 0
复制代码
作者: 阿一呐法 时间: 2022-7-22 15:20
回复 2# HOPE2021
谢谢,试了一下,完全没问题
作者: 阿一呐法 时间: 2022-7-22 15:30
回复 2# HOPE2021
可以再延伸一下吗,假如同一目录下有N个不同名字的txt文本。
而只有部分txt文本有对应的相同名字的ini文件。
这些ini文件的内容也是只有部分有对应的参数c。
这种情况怎么弄
作者: HOPE2021 时间: 2022-7-22 15:59
回复 4# 阿一呐法
鄙人目前只能做到这个水平了。请您看一下这样可以吗?- @Echo Off
- Chcp 936 > Nul %= 请确保您的文本是ANSI编码,如果含有Unicode字符,请把936改成65001 =%
- @Goto :Main %= 跳转到Main标签 =%
-
- :Main
- Cd /D "%Cd%\Files" %= 您可以把它改成您自己需要的目录 =%
-
- %= 设置参数3 =%
- Set Var=参数c
-
- %= 格式化参数3 =%
- Set Var=%Var:"=""%
-
- %= 您的XXX和YYY文本 =%
- Set Var1=xxx
- Set Var2=yyy
-
- %= 清除1.Lst内容 =%
- Cd. > 1.Lst
-
- %= 遍历所有Txt文档 =%
- SETLOCAL ENABLEDELAYEDEXPANSION
- For /F %%I in ('Dir /B *.Txt') Do (
- Find %%~nI.Ini "%Var%" > Nul 2> Nul
- If !ErrorLevel! Equ 0 (
- %= 如果查找到 =%
- %= 写入XXX =%
- Rem Echo.%%~nI %Var1%
- >> 1.Lst Echo.%%~nI %Var1%
- )
- If !ErrorLevel! Equ 1 (
- %= 如果没有查找到 =%
- %= 写入XXX =%
- Rem Echo.%%~nI %Var2%
- >> 1.Lst Echo.%%~nI %Var2%
- )
- )
- ENDLOCAL
- @Goto :Next
-
- :Next
- %= 暂停 =%
- %=此处可以增加您的代码=%
- Echo.已完成,请按任意键退出……
- Pause > Nul
- @Exit /B 0
复制代码
作者: 阿一呐法 时间: 2022-7-22 19:46
回复 5# HOPE2021
反复测试了一下,目录下有多个ini文件的时候,只会以第一个查找到的ini,来做判断,不过还是谢谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |