找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 516|回复: 12

[文本处理] [已解决]doc 筛选(答案)可以现实吗?答案在12楼

[复制链接]
发表于 2026-2-28 10:24:40 | 显示全部楼层 |阅读模式
本帖最后由 lovekix 于 2026-3-3 13:10 编辑

我下载的试卷 只想打印 试题和答案 不想打印【解析】和【标注】

  1. 8 、【答案】 D;
  2. 【解析】 【详解】本题考查建设法治**。①②:题文中河北省**服务办通过便民热线“受理企业和群众诉求1128.8万件,即办率66.43%、服务满意度99.1%”,从**的角度看,这一举措有利于提高**的办事效率,提升**的公信力;从公民的角度看,方便了群众办事,维护了人民群众的合法权益。故①②说法正确;③④:题文中没有体现规范**的行政权、**推进政务公开、决策**等观点,故③④不符合题意;故本题选D。
  3. 【标注】  ( 建设法治**的要求 )
复制代码
https://wwbpj.lanzouw.com/iHwFe3jed6cd
发表于 2026-2-28 20:34:51 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-2-28 21:34 编辑

回复 1# lovekix

以下代码存为 test.bat 运行,要置于待处理的 *.doc 文件所在目录中,运行结果会生成对应的专供打印的 *.doc.prn.doc 文件(其中删除了分别包含关键词 【解析】和【标注】的段落)...

  1. 2>1/* ::
  2. @echo off & dir /b/s/a-d *.doc|cscript /nologo /e:jscript "%~f0"
  3. pause&exit/b */
  4. kw1='【解析】', kw2='【标注】';
  5. ws=WSH.stdin, v=WSH.arguments;
  6. wa=WSH.createObject('word.application'), wa.visible=false, wa.displayAlerts=0;
  7. while (!ws.atendofstream) {
  8.    f=ws.readline(), WSH.echo('正在处理》 '+f), doc=wa.documents.open(f);
  9.    for (i=doc.Paragraphs.Count; i>=1; i--) {
  10.       p=doc.Paragraphs(i), text=p.Range.Text;
  11.       if (text.indexOf(kw1) != -1 || text.indexOf(kw2) != -1) p.Range.Delete(); }
  12.    doc.SaveAs(f+'.prn.doc'), doc.close(false); }
  13. wa.quit(), WSH.quit();
复制代码
发表于 2026-2-28 21:32:02 | 显示全部楼层
回复 1# lovekix

二楼代码删除两个关键词(可自定义)的位置条件不限于在段落开头,以下代码改为关键词只能位于段落开头,由楼主择宜而用...

  1. 2>1/* ::
  2. @echo off & dir /b/s/a-d *.doc|cscript /nologo /e:jscript "%~f0"
  3. pause&exit/b */
  4. kw1='【解析】', kw2='【标注】', x1=kw1.length, x2=kw2.length;
  5. ws=WSH.stdin, v=WSH.arguments;
  6. wa=WSH.createObject('word.application'), wa.visible=false, wa.displayAlerts=0;
  7. while (!ws.atendofstream) {
  8.    f=ws.readline(), WSH.echo('正在处理 》'+f), doc=wa.documents.open(f);
  9.    for (i=doc.Paragraphs.Count; i>=1; i--) {
  10.       p=doc.Paragraphs(i), t=p.Range.Text, h1=t.substr(0,x1), h2=t.substr(0,x2);
  11.       if (h1==kw1 || h2==kw2) p.Range.Delete(); }
  12.    doc.SaveAs(f+'.prn.doc'), doc.close(false); }
  13. wa.quit(), WSH.quit();
复制代码
 楼主| 发表于 2026-3-1 16:10:18 | 显示全部楼层
本帖最后由 lovekix 于 2026-3-1 16:11 编辑

回复 3# aloha20200628

两个都出现这个错误(UTF-8)
改成

ANSI 出现这个错误

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2026-3-1 19:03:16 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-3-1 19:06 编辑

回复 4# lovekix

   二楼两段代码在 win11 系统下用一楼附件两个 *.doc 文件已经测试,均予通过。
   关于四楼第一个截图报错,其尝试解决方法是:如果代码脚本存盘用 utf-8 编码,则须运行前先在命令行切换当前码页为65001,命令是 chcp 65001>nul
   关于四楼第二个截图报错,建议用 office word 组件的标准安装和注册方法,否则容易导致 word 组件未完成系统注册,从而出现以后 vbs/jscript 脚本调用 word 组件功能时的报错,针对楼主实况的具体解决方案,可向 ai 求教...
 楼主| 发表于 2026-3-1 19:17:16 | 显示全部楼层
本帖最后由 lovekix 于 2026-3-2 08:57 编辑

回复 5# aloha20200628


    我用的是WPS

需不需要  像7Z那样 先调用一下
set "My7z=C:\Program Files\7-Zip\7z.exe"


ps:3月2
重新安装了 Office2024精简版
下载地址
http://www.ccho.cc/down/644.html#down
使用的命令  是OK 的

看样子  WPS 还是需要其他的命令 还不能通用
发表于 2026-3-2 12:13:36 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-3-2 12:18 编辑

回复 6# lovekix

   从来没玩过 wps 系统,但据说只有 wps 专业增强版支持 bat+vbs/jscript 脚本调用 kwps.application 功能处理 *.doc 文件...
   另:精简版可否能用快捷键 ALT+F11 弹窗 wps 宏编辑?若否,也许只能手工修理 *.doc 了...
发表于 2026-3-2 12:51:18 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-3-2 12:57 编辑

回复 6# lovekix

用 ai 获取的建议如下(仅供参考),楼主若圆满完成以下安装设置,则可复用2-3楼代码再试运行结果,运行前只须将代码第6行中的 word.application 替换为 KWPS.Application 即可 》

一。版本选择:WPS 官网下载的最新版个人版(Windows 桌面端)即可,这个版本既能满足 JS 调用 KWPS.Application 操作 .doc 文件的所有需求,又完全免费,是性价比最高的选择。
二。要求:完整安装 + 开启「第三方程序调用」权限
三。注意:不选极简 / 绿色版,只装桌面版
1. 安装要求
   从官网下载 WPS Office 个人版(Windows),必须完整安装(不要极简 / 自定义精简),安装时保留默认组件(WPS 文字必选,其他可选)。
2. 开启第三方调用
   打开:开始 → WPS Office → WPS Office 工具 → 配置工具(ksomisc.exe)。
   进入:高级 → 兼容设置。
   必须勾选:WPS Office 兼容第三方软件和程序 → 确定 → 重启电脑。
   可选勾选(但建议采用更可靠):WPS 文字 → 设置 → 安全中心 → 信任中心 → 勾选 允许第三方程序调用 WPS、启用宏。
 楼主| 发表于 2026-3-2 19:16:24 | 显示全部楼层
回复 8# aloha20200628


    确实可以



又出新问题了
就是解析删除不干净

能不能  以【解析】  为开始

以【标注】段结尾
发表于 2026-3-2 20:09:49 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-3-2 20:14 编辑

回复 9# lovekix

不知你用哪段代码行之有效?无论如何,在现有代码的情况下,你可以用最简单的方法尝试解决 '一次删除不净' 的问题,即针对首次删除不净的结果文件 *.doc.prn.doc 再用那段有效的代码删除一次就是了...
 楼主| 发表于 2026-3-3 08:36:48 | 显示全部楼层
本帖最后由 lovekix 于 2026-3-3 09:23 编辑

回复 10# aloha20200628


    只要 word.application 替换为 KWPS.Application
都有效果


删除不彻底是说  比如这张试卷
https://wwbpj.lanzouw.com/iZS7R3jo05gd



黄色的是   只处理了这些

我想要的结果是 去掉黄色+绿色这些
发表于 2026-3-3 10:33:44 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-3-3 10:42 编辑

回复 11# lovekix

是要删除有【解析】和【标注】开头的段落以及二者之间的所有段落?若是,可用以下代码...

  1. 2>1/* ::
  2. @echo off & dir /b/s/a-d *.doc|cscript /nologo /e:jscript "%~f0"
  3. pause&exit/b */
  4. kw1='【解析】', kw2='【标注】', x1=kw1.length, x2=kw2.length;
  5. ws=WSH.stdin, v=WSH.arguments;
  6. wa=WSH.createObject('KWPS.application'), wa.visible=false, wa.displayAlerts=0;
  7. while (!ws.atendofstream) {
  8.    f=ws.readline(), WSH.echo('正在处理 》'+f), doc=wa.documents.open(f);
  9.    for (k=0,i=doc.Paragraphs.Count; i>=1; i--) {
  10.       p=doc.Paragraphs(i), t=p.Range.Text, h1=t.substr(0,x1), h2=t.substr(0,x2);
  11.       if (h2==kw2) { k=1, p.Range.Delete(); }
  12.       else if (h1==kw1) { k=0, p.Range.Delete(); }
  13.       else if (k==1) p.Range.Delete(); }
  14.    doc.SaveAs(f+'.prn.doc'), doc.close(false); }
  15. wa.quit(), WSH.quit();
复制代码

评分

参与人数 1技术 +1 收起 理由
lovekix + 1 乐于助人

查看全部评分

 楼主| 发表于 2026-3-3 13:10:10 | 显示全部楼层
回复 12# aloha20200628


    感谢  这个完美解决了
  1. 2>1/* ::
  2. @echo off & dir /b/s/a-d *.doc|cscript /nologo /e:jscript "%~f0"
  3. pause&exit/b */
  4. kw1='【解析】', kw2='【标注】', x1=kw1.length, x2=kw2.length;
  5. ws=WSH.stdin, v=WSH.arguments;
  6. wa=WSH.createObject('KWPS.application'), wa.visible=false, wa.displayAlerts=0;
  7. while (!ws.atendofstream) {
  8.    f=ws.readline(), WSH.echo('正在处理 》'+f), doc=wa.documents.open(f);
  9.    for (k=0,i=doc.Paragraphs.Count; i>=1; i--) {
  10.       p=doc.Paragraphs(i), t=p.Range.Text, h1=t.substr(0,x1), h2=t.substr(0,x2);
  11.       if (h2==kw2) { k=1, p.Range.Delete(); }
  12.       else if (h1==kw1) { k=0, p.Range.Delete(); }
  13.       else if (k==1) p.Range.Delete(); }
  14.    doc.SaveAs(f+'.prn.doc'), doc.close(false); }
  15. wa.quit(), WSH.quit();
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 19:14 , Processed in 0.023191 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表