处理知识库文件_编写powershell脚本文件_批量转换其他格式文件到pdf文件---人工智能工作笔记0249

news2025/6/4 10:28:35

   最近在做部门知识库,选用的dify,作为rag的工具,但是经过多个对比,最后发现,

比较好用的是,纳米搜索,但是可惜纳米搜索无法在内网使用,无法把知识库放到本地,导致

有信息安全问题无法使用。

    再则,知识库文件导入的时候,测试发现excel文件,直接导入,不如直接转换成pdf文件导入效果要好,纳米搜索对文档的解析,效果更好一些。但是转换pdf文件,如果使用微软的excel,效果不好,只能转换当前页,使用wps效果很好,可以转换所有页,但是,一个一个的去转换效果太慢了。所以自己就做了一个批量,把excel文件转换为pdf的脚本,其实就是一个powershell的脚本文件,直接右键运行就可以了。运行之前,先打开一个excel文件,待处理的。

    然后等待脚本自动处理就可以了。

# 利用wps自动保存为pdf
# 做知识库用,知识库中对pdf的支持会更好一些。AutoKeyPress.ps1
Add-Type -TypeDefinition @'
using System;
using System.Runtime.InteropServices;

# Mouse鼠标操作
public class MouseAction {
    [DllImport("user32.dll")]
    public static extern bool SetCursorPos(int X, int Y);

    [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
    public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, UIntPtr dwExtraInfo);

    private const uint MOUSEEVENTF_LEFTDOWN = 0x02;
    private const uint MOUSEEVENTF_LEFTUP = 0x04;
    private const uint MOUSEEVENTF_RIGHTDOWN = 0x08;
    private const uint MOUSEEVENTF_RIGHTUP = 0x10;

    public static void LeftClick() {
        mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, UIntPtr.Zero);
    }

    public static void RightClick() {
        mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, UIntPtr.Zero);
    }

    public static void LeftClickAt(int x, int y) {
        SetCursorPos(x, y);
        mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, UIntPtr.Zero);
    }

    public static void RightClickAt(int x, int y) {
        SetCursorPos(x, y);
        mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, UIntPtr.Zero);
    }
}
'@


$WShell = New-Object -ComObject wscript.shell

while($true) {
    Start-Sleep -Seconds 4

    # Alt+F  先打开一个文件excel,然后,在文件列表选中最后一个,他会一个个向上处理
    # 打开文件以后,首先按下alt+f 打开文件 菜单
    $WShell.SendKeys("%f")
    Start-Sleep -Seconds 2
    
    # A 按下A,选中另存为
    $WShell.SendKeys("a")
    Start-Sleep -Seconds 1
    
    # M 按下M,打开另存为的窗口
    $WShell.SendKeys("m")
    Start-Sleep -Seconds 1
    
    # Tab 然后tab选中要保存的格式选项
    $WShell.SendKeys("{TAB}")
    Start-Sleep -Seconds 1
    
    # End 找到pdf格式
    $WShell.SendKeys("{END}")
    Start-Sleep -Seconds 1
    
    # Alt+S 保存pdf文件开始
    $WShell.SendKeys("%s")
    Start-Sleep -Seconds 6

    # Enter 关闭 pdf保存完成窗口 保存以后关闭pdf窗口
    $WShell.SendKeys("{ENTER}")
    Start-Sleep -Seconds 1

    #关闭当前文档 处理以后 关闭当前文档
    $WShell.SendKeys("^w")
    Start-Sleep -Seconds 1

    #然后按下n,关闭当前文档
    $WShell.SendKeys("n")
    Start-Sleep -Seconds 1

    # Alt+Tab
    # 然后按下alt+tab这个不用了,之前用的
    #$WShell.SendKeys("%{TAB}")
    #Start-Sleep -Seconds 3

    #然后打开运行窗口
    # 创建 Shell.Application 对象并调用 FileRun 方法
    # 这里是打开运行,运行中注意,默认要显示需要打开的文件夹
    $shell = New-Object -ComObject "Shell.Application"
    $shell.FileRun()
    Start-Sleep -Seconds 1

    #这里就打开对应的运行显示的文件夹 运行中要提前把对应的文件夹路径贴里面去
    $WShell.SendKeys("{ENTER}")
    Start-Sleep -Seconds 1

    #按下鼠标左键,选中当前的文件
    # 左键单击当前位置
    #[MouseAction]::LeftClick()
    # 发送Alt+D(定位到地址栏)
    #这个是为了定位到文件列表 
    $wshell.SendKeys("%d")
    Start-Sleep -Milliseconds 200


    # 发送3次Tab键(切换到文件列表)
    $wshell.SendKeys("{TAB}")
    Start-Sleep -Milliseconds 100
    $wshell.SendKeys("{TAB}")
    Start-Sleep -Milliseconds 100
    $wshell.SendKeys("{TAB}")

    #向上选择 处理下一个文件
    # Up Arrow
    $WShell.SendKeys("{UP}")
    Start-Sleep -Seconds 2
    
    #按下enter打开下一个文件
    # Enter
    $WShell.SendKeys("{ENTER}")
    
    # 停顿2秒
    Start-Sleep -Seconds 2
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2396607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rtpmixsound:实现音频混音攻击!全参数详细教程!Kali Linux教程!

简介 一种将预先录制的音频与指定目标音频流中的音频(即 RTP)实时混合的工具。 一款用于将预先录制的音频与指定目标音频流中的音频(即 RTP)实时混合的工具。该工具创建于 2006 年 8 月至 9 月之间。该工具名为 rtpmixsound。它…

【计算机网络】第3章:传输层—面向连接的传输:TCP

目录 一、PPT 二、总结 TCP(传输控制协议)详解 1. 概述 核心特性: 2. TCP报文段结构 关键字段说明: 3. TCP连接管理 3.1 三次握手(建立连接) 3.2 四次挥手(终止连接) 4. 可…

《信号与系统》--期末总结V1.0

《信号与系统》–期末总结V1.0 学习链接 入门:【拯救期末】期末必备!8小时速成信号与系统!【拯救期末】期末必备!8小时速成信号与系统!_哔哩哔哩_bilibili 精通:2022浙江大学信号与系统(含配…

mac笔记本如何快捷键截图后自动复制到粘贴板

前提:之前只会进行部分区域截图操作(commandshift4)操作,截图后发现未自动保存在剪贴板,还要进行一步手动复制到剪贴板的操作。 mac笔记本如何快捷键截图后自动复制到粘贴板 截取 Mac 屏幕的一部分并将其自动复制到剪…

高考加油!UI界面生成器!

这个高考助力标语生成器具有以下特点: 视觉设计:采用了蓝色为主色调,搭配渐变背景和圆形装饰元素,营造出宁静而充满希望的氛围,非常适合高考主题。 标语生成:内置了超过 100 条精心挑选的高考加油标语&a…

window ollama部署模型

注意去官网下载ollama,这个win和linux差别不大,win下载exe,linux用官网提供的curl命令 模型下载表:deepseek-r1 使用命令:Ollama API 交互 | 菜鸟教程 示例: 1.查看已加载模型: 2.文本生成接口 curl -X POST http://localhost:11434/v1/completions -H "Conte…

用mediamtx搭建简易rtmp,rtsp视频服务器

简述: 平常测试的时候搭建rtmp服务器很麻烦,这个mediamtx服务器,只要下载就能运行,不用安装、编译、配置等,简单易用、ffmpeg推流、vlc拉流 基础环境: vmware17,centos10 64位,wi…

ubuntu安装devkitPro

建议开个魔法 wget https://apt.devkitpro.org/install-devkitpro-pacman chmod x ./install-devkitpro-pacman sudo ./install-devkitpro-pacman(下面这句如果报错也没事) sudo ln -s /proc/self/mounts /etc/mtab往~.bashrc添加 export DEVKITPRO/o…

Linux(10)——第二个小程序(自制shell)

目录 ​编辑 一、引言与动机 📝背景 📝主要内容概括 二、全局数据 三、环境变量的初始化 ✅ 代码实现 四、构造动态提示符 ✅ 打印提示符函数 ✅ 提示符生成函数 ✅获取用户名函数 ✅获取主机名函数 ✅获取当前目录名函数 五、命令的读取与…

代码随想录算法训练营 Day59 图论Ⅸ dijkstra优化版 bellman_ford

图论 题目 47. 参加科学大会(第六期模拟笔试) 改进版本的 dijkstra 算法(堆优化版本) 朴素版本的 dijkstra 算法解法的时间复杂度为 O ( n 2 ) O(n^2) O(n2) 时间复杂度与 n 有关系,与边无关系 类似于 prim 对应点多…

【HW系列】—安全设备介绍(开源蜜罐的安装以及使用指南)

文章目录 蜜罐1. 什么是蜜罐?2. 开源蜜罐搭建与使用3. HFish 开源蜜罐详解安装步骤使用指南关闭方法 总结 蜜罐 1. 什么是蜜罐? 蜜罐(Honeypot)是一种主动防御技术,通过模拟存在漏洞的系统或服务(如数据库…

汽车总线分析总结(CAN、LIN、FlexRay、MOST、车载以太网)

目录 一、汽车总线技术概述 二、主流汽车总线技术对比分析 1. CAN总线(Controller Area Network) 2. LIN总线(Local Interconnect Network) 3. FlexRay总线 4. MOST总线(Media Oriented Systems Transport&#x…

MyBatisPlus--条件构造器及自定义SQL详解

条件构造器 在前面学习快速入门的时候,练习的增删改查都是基于id去执行的,但是在实际开发业务中,增删改查的条件往往是比较复杂的,因此MyBatisPlus就提供了一个条件构造器来帮助构造复杂的条件。 MyBatisPlus支持各种复杂的wher…

OVD开放词汇检测 Detic 训练COCO数据集实践

0、引言 纯视觉检测当前研究基本比较饱和,继续创新提升空间很小,除非在CNN和transformer上提出更强基础建模方式。和文本结合是当前的一大趋势,也是计算机视觉和自然语言处理结合的未来趋势,目前和文本结合的目标检测工作还是有很…

docker、ctr、crictl命令简介与使用

概述 在使用k3s过程中,经常需要使用ctr和crictl两个命令,本文记录一下。 ctr 类似docker命令是docker-shim容器运行时的客户端工具,ctr是Containerd的客户端工具。一个简单的CLI接口,用作Containerd本身的一些调试用途&#xf…

WEB3——什么是ABI

怎么获得ABI? 在编译完合约后,可以在左边下面点击复制ABI ABI(Application Binary Interface,应用二进制接口)是用来让前端或服务端 JavaScript 代码与智能合约进行交互的桥梁,它描述了合约的函数、事件和…

嵌入式软件--stm32 DAY 8.5 基础复习总结

1.时钟树 在数据手册里面,有一张密密麻麻的图,正是时钟系统里的时钟树。 对于时钟,我们注意有两点。一个是系统时钟SYSCLK,一个是依赖外部晶振生成的RTC. RTC以外部低速晶振作为时钟源或者外部高速晶振128分频后作为时钟源,又或者…

MMRL: Multi-Modal Representation Learning for Vision-Language Models(多模态表示学习)

摘要 预训练的VLMs,对于跨任务的迁移学习至关重要,然而,在few-shot数据集上微调会导致过拟合,降低在新任务上的性能。为解决这个问题,提出一种新的多模态表征学习框架(MMRL),该框架引入了一个共享、可学习…

rsync服务的搭建

目录 一、rsync介绍 rsync的安装 二、rsync的语法 三、rsync命令使用 1. 本机同步 2. 远程同步 四、rsync作为服务使用 1、尝试启动rsync程序 2、rsync的配置文件介绍 注意事项: 3. rsyncinotify实时同步 3.依赖服务托管xinetd(CentOS 6中rs…

vscode 配置 QtCreat Cmake项目

1.vscode安装CmakeTool插件并配置QT中cmake的路径,不止这一处 2.cmake生成器使用Ninja(Ninja在安装QT时需要勾选),可以解决[build] cc1plus.exe: error: too many filenames given; type ‘cc1plus.exe --help’ for usage 编译时…