[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] BAT批量提取cfg指定内容上方首列数字合并生成新的txt

需求:将多个文件夹路径发帖1-发帖30
C:\Users\Administrator\Desktop\发帖1\Save目录中,提取ListBoxes.cfg内容首行至第一个“-----split-----“”中的第一列的数字内容,生成新的TXT文档保存。

ListBoxes.cfg文件内容如下:

6982151165 大家好
6978302768 你好
-----split-----
+1
+2
+3
-----split-----
+4
+5
+6
-----split-----



提取后的内容为:
6982151165
6978302768
保存至收集.txt

在线等大神解答,不知能否看明白,
就是我想批量提取
C:\Users\Administrator\Desktop\发帖1\Save\ListBoxes.cfg
C:\Users\Administrator\Desktop\发帖2\Save\ListBoxes.cfg
C:\Users\Administrator\Desktop\发帖3\Save\ListBoxes.cfg
一直到
C:\Users\Administrator\Desktop\发帖30\Save\ListBoxes.cfg

中的内容大概如下
6982151165 大家好
6978302768 你好
-----split-----
+1
+2
+3
-----split-----
+4
+5
+6
-----split-----


只提取如下内容中的第一列的数字:
6982151165 大家好
6978302768 你好
-----split-----


在桌面生成收集.txt
提取后想收集的内容就是:
6982151165
6978302768

TOP

回复 3# yhcfsr


    您好,我试了,这个采集的并非ListBoxes.cfg这个文件的。
好像采集的是文件夹第一个txt文本的

TOP

回复 3# yhcfsr


    是不是上述命令中,哪些地方是填写文件夹的呢。

TOP

@echo off

>"%USERPROFILE%\desktop\收集.txt" (for /f "delims=" %%a in ('dir /a-d/b/s ListBoxes.cfg') do (
        call :GetContent "%%~a"       
))
start "" "%USERPROFILE%\desktop\收集.txt"
exit /b

:GetContent
for /f "useback" %%i in ("%~1") do (
        if "%%~i" equ "-----split-----" goto :eof
        echo;%%i
)

我修改成上述的,倒是可以提取这个文件了,但是我发现只提取了一个路径C:\Users\Administrator\Desktop\发帖1\Save\ListBoxes.cfg

其他的没一起提取

TOP

回复 3# yhcfsr


   
@echo off

>"%USERPROFILE%\desktop\收集.txt" (for /f "delims=" %%a in ('dir /a-d/b/s ListBoxes.cfg') do (
        call :GetContent "%%~a"      
))
start "" "%USERPROFILE%\desktop\收集.txt"
exit /b

:GetContent
for /f "useback" %%i in ("%~1") do (
        if "%%~i" equ "-----split-----" goto :eof
        echo;%%i
)

我修改成上述的,倒是可以提取这个文件了,但是我发现只提取了一个路径C:\Users\Administrator\Desktop\发帖1\Save\ListBoxes.cfg

其他的没一起提取

TOP

回复 3# yhcfsr

@echo off

>"%USERPROFILE%\desktop\收集.txt" (for /f "delims=" %%a in ('dir /a-d/b/s ListBoxes.cfg') do (
        call :GetContent "%%~a"       
))
start "" "%USERPROFILE%\desktop\收集.txt"
exit /b

:GetContent
for /f "useback" %%i in ("%~1") do (
        if "%%~i" equ "-----split-----" goto :eof
        echo;%%i
)



    刚才又试了一下,改成如上后,我发现只有当ListBoxes.cfg这个文件手动输入数字保存,发生改变后才会被提取,否则不提取。 不知道是什么原因

TOP

回复 9# Batcher


    您好,因为附件上传限制我无法上传,
我把文件放到http://suo.im/5sU6oh这个链接下载了。
您查看下。

TOP

回复 11# Batcher

TOP

回复 13# Batcher


    这个是程序自动生成的。即使更改后,程序不久就又会变回原样。

TOP

本帖最后由 308131375 于 2020-9-30 18:30 编辑

回复 15# yhcfsr


    您好,我刚试了下,是可以收集到了。
但是发现只能收集到第一个sav文件夹的这个文件,后续还有30多个同样的文件夹内ListBoxes.cfg的数据没有收集到。

TOP

回复 17# yhcfsr


    恩,到父目录就可以了。完美解决了。

TOP

回复 19# wujunkai


    这个也是依次要放入父目录吗?
还是C盘就可以。

TOP

回复 19# wujunkai


    您这个点了收集,收集到的是空的。

TOP

回复 19# wujunkai


    15楼的可以收集到。好像就是格式问题。

TOP

返回列表