返回列表 发帖
楼主好像忘了有些字符是不能出现在文件名中的,比如生成的第3个文件,文件名中会出现字符"?"的,这是非法的。

TOP

批处理保存为ANSI编码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. findstr /n /rb "★★★★★" 1.txt>1.log
  4. for /f "delims=:" %%a in (1.log) do set _%%a=true
  5. del 1.log
  6. for /f "tokens=* delims=★" %%i in (1.txt) do (
  7.     set /a n+=1
  8.     if defined _!n! (
  9.         for /f "tokens=1,2" %%a in ("%%i") do set filename=%%a %%b.txt
  10.     )
  11.     echo,%%i>>!filename!
  12. )
  13. pause
复制代码

TOP

对示范中的文本来说,实际上不做标记也能实现。

TOP

本帖最后由 qixiaobin0715 于 2023-2-2 15:29 编辑

你把源文件发到网盘上,帮你测试看看。
复制你的示范文本没问题。

TOP

回复 10# qd2024
可以这样处理:
1.打开要处理的word文件;
2.另存为中,选择文件类型为纯文本文件,对话框中文本编码中选择其它编码中的GB2312,确定;
3.保存的文本中删除Module1 unit1这一行前面的所有行,删除文本中每行前面的全角空格;
4.将下面代码保存为ANSI编码,运行批处理文件。
  1. @echo off
  2. findstr /n /rb "Module[0-9]*.unit[0-9]" 1.txt>1.log
  3. for /f "delims=:" %%a in (1.log) do set _%%a=true
  4. del 1.log
  5. for /f "tokens=1* delims=:" %%i in ('findstr /n .* 1.txt') do (
  6.     if defined _%%i set "filename=%%j.txt"
  7.     set "str=%%j"
  8.     setlocal enabledelayedexpansion
  9.     echo,!str!>>!filename!
  10.     endlocal
  11. )
  12. pause
复制代码

TOP

将源文件和批处理文件统一UTF-8编码:
  1. @echo off &@cls&chcp>nul 65001
  2. findstr /n /rb "Module[0-9]*.unit[0-9]" 1.txt>1.log
  3. for /f "delims=:" %%a in (1.log) do set _%%a=true
  4. del 1.log
  5. for /f "tokens=1* delims=:" %%i in ('findstr /n .* 1.txt') do (
  6.     if defined _%%i set "filename=%%j.txt"
  7.     set "str=%%j"
  8.     setlocal enabledelayedexpansion
  9.     echo,!str!>>!filename!
  10.     endlocal
  11. )
  12. pause
复制代码

TOP

回复 24# aloha20200628
楼主的需求是,分割后的文件编码为UTF-8

TOP

回复 22# qd2024
后续还需要如何处理?

TOP

返回列表