[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

本帖最后由 yhcfsr 于 2020-9-29 16:54 编辑
  1. @echo off
  2. >"%USERPROFILE%\desktop\收集.txt" (for /f "delims=" %%a in ('dir /a-d/b/s *.cfg') do (
  3. call :GetContent "%%~a"
  4. ))
  5. start "" "%USERPROFILE%\desktop\收集.txt"
  6. exit /b
  7. :GetContent
  8. for /f "useback" %%i in ("%~1") do (
  9. if "%%~i" equ "-----split-----" goto :eof
  10. echo;%%i
  11. )
复制代码
用法: 保存为BAT,放在桌面执行
QQ 33892006

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

回复 8# 308131375


请把3楼最新代码保存为 test.bat 并放在 C:\Users\Administrator\Desktop 这个目录下
然后参考Q-04和Q-05把bat文件和cfg文件都保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ

如果还是不行,请把 test.bat 和 cfg 文件打包压缩传上来我试试。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9# Batcher


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

TOP

回复 10# 308131375


    我打不开这个链接,你传到百度网盘试试?不用打包太多文件,有两三个就够了
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 11# Batcher

TOP

回复 12# 308131375


    你这个ListBoxes.cfg是UTF-8编码,请试试9楼的方法改成ANSI编码。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 13# Batcher


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

TOP

  1. #&cls&@powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" & pause&exit
  2. Get-ChildItem -Path './' -Include ('ListBoxes.cfg') -Recurse|ForEach-Object {
  3.     Get-Content -Path $_ -Encoding UTF8|ForEach-Object{
  4.        if( $_ -eq '-----split-----') { break;}
  5.        $_ -replace '\D.*' >> $env:USERPROFILE'\desktop\收集.txt'
  6.     }
  7. }
复制代码
用法:保存为BAT,适用于WIN7及以上系统
1

评分人数

QQ 33892006

TOP

返回列表