Board logo

标题: [文本处理] [已解决]批处理怎样将多个txt内容导入表格? [打印本页]

作者: gddsssko    时间: 2024-6-15 10:24     标题: [已解决]批处理怎样将多个txt内容导入表格?

本帖最后由 gddsssko 于 2024-6-15 17:03 编辑

将目录下、子目录及子子目录下所有txt文件名称和内容导入到表格
将第1个txt名称放在表格A1单元格,txt内容每隔一行放入一个单元格(第一行放入B1单元格,第二行放入C1单元格......)
将第2个txt名称放在表格A2单元格,txt内容每隔一行放入一个单元格(第一行放入B2单元格,第二行放入C2单元格......)
...
将第n个txt名称放在表格An单元格,txt内容每隔一行放入一个单元格(第一行放入Bn单元格,第二行放入Cn单元格......)

//空行也算一行,txt内容一般不超过100行, txt导入不考虑先后顺序,txt总数量超过一万。

     例如:
TXT文件名称为:
    A01.txt
TXT文件内容为:
    你好,世界
    HelloWorld
     
    上边是空行
    ABC123
导入到表格:
    A1单元格:A01    B1单元格:你好,世界    C1单元格:HelloWorld    D1单元格:     E1单元格:上边是空行    F1单元格:ABC123
作者: 77七    时间: 2024-6-15 12:17

  1. @echo off
  2. cd /d "%~dp0"
  3. (for /r %%i in (*.txt) do (
  4. set /p="%%~ni"<nul
  5. for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<"%%i"') do (
  6. set /p=","%%b""<nul
  7. )
  8. echo=
  9. ))>out.csv
  10. pause
复制代码

作者: newswan    时间: 2024-6-15 14:06

100 行 10000 列
如果是excel 用 vba 或者 powershell 好些
作者: gddsssko    时间: 2024-6-15 15:25

本帖最后由 gddsssko 于 2024-6-15 15:35 编辑

回复 2# 77七
链接:https://pan.baidu.com/s/1wJge02-TI0REsBc9r2hcug?pwd=4b3g
提取码:4b3g
txt名字正常,内容里面的汉字却乱码,然后两个文本内容之间中间还夹杂着几百行教程:
SET [variable=[string]]

  variable  指定环境变量名。
  string    指定要指派给变量的一系列字符串。

要显示当前环境变量,键入不带参数的 SET。

如果命令扩展被启用,SET 会如下改变:

可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配
SET 命令已使用的名称的所有变量的值。例如:

    SET P

会显示所有以字母 P 打头的变量

如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL
设置成 1。

SET 命令不允许变量名含有等号。

在 SET 命令中添加了两个新命令行开关:

    SET /A expression
    SET /P variable=[promptString]

/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式
评估器很简单并以递减的优先权顺序支持下列操作:

    ()                  - 分组
    ! ~ -               - 一元运算符
    * / %               - 算数运算符
    + -                 - 算数运算符
    << >>               - 逻辑移位
    &                   - 按位“与”
    ^                   - 按位“异”
    |                   - 按位“或”
    = *= /= %= += -=    - 赋值
      &= ^= |= <<= >>=
等等差不多300行
作者: 77七    时间: 2024-6-15 16:16

回复 4# gddsssko


   我找到原因了,没有对 文本中的引号做处理。
  1. @echo off
  2. chcp 65001 >nul
  3. cd /d "%~dp0"
  4. (for /r %%i in (*.txt) do (
  5. set str="%%~ni"
  6. for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<"%%i"') do (
  7. set line=%%b
  8. setlocal enabledelayedexpansion
  9. if "!line!" neq "" (
  10. set "line=!line:"=""!"
  11. )
  12. for /f "delims=" %%x in ("!str!,"!line!"") do (
  13. endlocal
  14. set "str=%%x"
  15. )
  16. )
  17. setlocal enabledelayedexpansion
  18. echo=!str!
  19. endlocal
  20. ))>out.csv
  21. pause
复制代码

作者: gddsssko    时间: 2024-6-15 17:02

回复 5# 77七
OK了,还是你最帅啊




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2