AutoHotKey文件与路径交互操作

news2024/11/29 20:32:21

文章目录

    • 路径操作
    • 文件选择
    • 文件读写
    • 文件属性

AHK作为一种脚本语言,其功能特点是对操作系统功能的整合与简化,从而缩减操作流程,从而起到提高效率的目的。鼠标、键盘的映射,相当于是对外设操作的简化,而除了外部交互之外,操作文件则是一项十分频繁的任务,所以在AHK中提供了诸多路径操作函数。

路径操作

AHK支持文件夹和文件的复制、移动、删除等操作,具体如下

操作文件夹文件
复制DirCopyFileCopy
移动DirMoveFileMove
删除DirDeleteFileDelete
判存DirExistFileExist
创建DirCreate

此外,还有SetWorkingDir可以更改脚本当前的工作目录。

其中,复制、移动操作至少需要两个输入参数,即源文件(夹)和目标文件(夹)。移动和判存函数则至少只需要一个输入路径。

此外,在删除文件夹时,会有一个布尔类型的可选参数Recurse,默认为false,表示若文件夹不为空,则不进行操作并抛出异常;如果设为true,则

在复制和移动操作时,会有一个可选参数Overwrite,默认为false,表示不覆盖现有项目,否则对现有内容进行覆盖。

下面举一个例子

CapsLock::{
    DirCreate "test"
    if DirExist("test")
    	Msgbox "test存在"
}

执行脚本后,点击CapsLock,则会在脚本所在路径创建一个名为test的文件夹,并弹出test存在的提示框。如果在创建文件夹之前,使用SetWorkingDir函数更改工作目录,则test文件夹会创建到相应的路径下。

文件选择

AHK提供了两个非常便捷的GUI工具,用来选择文件或文件夹,分别是DirSelectFileSelect,其调用接口分别为

slctFolder := DirSelect(StartingFolder, Options, Prompt)
slctFile := FileSelect(Options, RootDir\Filename, Title, Filter)

各参数含义如下

  • StartingFolder 起始路径
  • RootDir\Filename 起始路径及默认文件名
  • PromptTitle 对话框的操作文本
  • Filter 文件过滤器

DirSelectFileSelectOptions含义不同,在文件夹对话框中,其可选参数及其含义为

在文件对话框中,其可选参数及其含义为

  • D 允许用户选择文件夹,这种情况下Filter必须省略
  • M 支持多选
  • S 为文件保存对话框

文件读写

AHK可以创建、写入、读取文件,与此相关的函数有

函数说明
FileOpen打开文件
FileEncoding设置默认编码
FileAppend内容追加
FileRead读取文件

下面做一个简单的脚本来演示一下这几个函数的功能

CapsLock::{
    fileAppend "autohotkey", "test.txt"
    MsgBox fileRead("test.txt")
}

执行脚本后,点击CapsLock,就会创建一个文本文件test.txt,内容为autohotkey,同时弹出消息框,内容也是autohotkey

和大多数编程语言不同,AHK并没有提供类似FileWrite这样直接覆盖旧文件然后写入的函数,如果想实现类似功能,可以先将原来的文件删除。

此外,FileAppend, FileRead这两个函数都有可选参数Encoding,用于声明文件编码,缺省时采用默认编码。FileEncoding函数可设置默认编码。

文件属性

AHK封装了一些获取和设置文件属性的函数,

类别设置获取
文件类别FileSetAttribFileGetAttrib
时间戳FileSetTimeFileGetTime
文件字节数FileGetSize
版本FileGetVersion

其中,Attrib表示文件类别,在Windows中有如下几类

RASHNOT
只读存档系统隐藏普通离线临时

而文件时间则包括三类,通过WhichTime参数调控,其中M表示修改时间;C表示创建时间;A表示上次访问时间。

CapsLock::{
    MsgBox FileGetTime("test.txt", "M")
}

执行结果为

在这里插入图片描述

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

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

相关文章

docker harbor私有仓库部署

docker harbor私有仓库部署 docker system prune -a 删除停掉的服务,自定义网络等。 docker 私有仓库 docker配置文件 vim /etc/docker.daemon.josn { “insecury-registries”: ["192.168.232.10:5000],#指定私有仓库 } docker pull/push 19…

chatgpt赋能python:Python中引入其他包的指南

Python中引入其他包的指南 Python是一种流行的编程语言,拥有丰富的开源软件包和库。许多Python程序将使用其他包来增强其功能。在本文中,我们将探讨如何在Python项目中使用和引入其他包。 什么是Python包和库? Python包是一组可重复使用的…

冈萨雷斯DIP第7章知识点

文章目录 7.3 相关7.5 基图像7.6 傅里叶相关变换7.6.1 离散哈特利变换7.6.3 离散正弦变换 DIP的其他章节都好复习,唯独就这个第7章小波变换。复习起来十分头大,所以我开始写他的课后题,雾。 7.3 相关 已知两个连续函数 f ( x ) f(x) f(x) …

单链表【数据结构、数组模拟】

不采用动态链表 一般情况下,都是直接使用下面的代码进行模拟的 struct Node{int val;Node *next; }然后当我们需要进行创建一个新的节点时,都需要使用new Node(),非常慢!!! 数据规模一般都是10w~100w的数…

Android性能分析工具:Perfetto介绍及用法

本文字数:8409字 预计阅读时间:22分钟 概念 什么是Perfetto?Perfetto是Android 10中引入的全新平台级跟踪工具。这是适用于Android、Linux和Chrome的更加通用和复杂的开源跟踪项目。与Systrace不同,它提供数据源超集,可让您以pro…

【6.09 代随_52day】 最长递增子序列、最长连续递增序列、最长重复子数组

最长递增子序列、最长连续递增序列、最长重复子数组 最长递增子序列1.方法图解步骤递归代码 最长连续递增序列1.动态规划的方法图解步骤代码 最长重复子数组图解步骤代码 最长递增子序列 力扣连接:300. 最长递增子序列(中等) 1.方法 dp[i]…

开源 Golang 微服务入门三:ORM 框架 GORM

前言 前两篇笔记分别介绍了 Golang 微服务 HTTP 框架 Hertz 和 Golang 微服务 RPC 框架 Kitex,本文将要介绍面向ORM(持久层)框架 GORM。 官方文档 GORM 是面向 Golang 语言的一种 ORM(持久层)框架,支持多种数据库的接入,例如 MySQL&#x…

【TCP/IP】多进程服务器的实现(进阶) - 僵尸进程及wait、waitpid函数

目录 僵尸(Zombie)进程 僵尸进程的产生机制 僵尸进程的危害 僵尸进程的销毁 wait函数 waitpid函数 进程管理在网络编程中十分重要,如果未处理好,将会导致出现“僵尸进程”,进而影响服务器端对进程的管控。 僵尸(Zombie)进程 第一次听到…

继万物分割SAM之后,万物识别模型RAM来了!

Recognize Anything: A Strong Image Tagging Model 提出“识别万物模型”(Recognize Anything Model,RAM),用于图像打标签。RAM 可以高精度地识别任何常见类别。RAM 引入了图像打标签的一个新范式,利用大规模的图像-文…

如何在RPC和RESTful之间做选择?

不同软件系统之间的通信可以通过RPC(远程过程调用)或RESTful(表现层状态转移)协议来建立,这些协议允许多个系统在分布式计算中协同工作。 这两种协议在设计哲学上有所区别。RPC使得可以像调用本地过程一样调用服务器上…

AI时代已经到来,不想被抛弃,特别是传统产业的你,怎么办?

由于ChatGTP的惊人表现,本来已经趋于平淡的AI,又火爆起来。毫无疑问,人类已经进入了AI时代,AI将渗入到各行各业,渗入到生活与工作的每个方面。这是一场新的工业革命,很多工作都将消失,但也会产生…

【Python】Python进阶系列教程-- Python3 MySQL - mysql-connector 驱动(三)

文章目录 前言创建数据库连接创建数据库创建数据表主键设置 插入数据批量插入查询数据where 条件语句排序Limit删除记录更新表数据删除表 前言 往期回顾: Python进阶系列教程-- Python3 正则表达式(一)Python进阶系列教程-- Python3 CGI编程…

记录--7 个沙雕又带有陷阱的 JS 面试题

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 为了保证的可读性,本文采用意译而非直译。 在 JS 面试中,经常会看到一些简单而又沙雕的题目,这些题目包含一些陷阱,但这些在我们规范的编码下或者业务中…

基于BP神经网络的轨迹跟踪研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

NLP(1):Introduction

文章目录 Why process textChallengesText processingword, sentence, document, corpus, tokenProcessing stepsSentence segmentationWord TokenizationMaxMatch AlgorithmSubword Tokenization (BPE)BPE 算法 Word NormalizationStop Words Remove Wh…

数据分析第17课seaborn绘图

关系型绘图 seaborn.relplot() 这个函数功能非常强大,可以用来表示多个变量之间的关联关系。默认情况下是绘制散点图(散点图是看到变量与变量之间相关性最优的一个图形),也可以绘制线性图,具体绘制什么图形是通过kind参数来决定的。实际上以下两个函数就是relplot的特例…

Vue2 事件的默认和传播行为、事件修饰符

前言 在学习vue2时,学到了 事件修饰符,但是对事件的默认行为和传播行为不太理解,所以也就是不知道为啥要使用事件修饰符,所以找了一些资料,在此记录一下。 Vue2官方文档 事件处理 — Vue.js (vuejs.org)https://v2.…

【 Python 全栈开发 - WEB开发篇 - 29 】MySQL初步

文章目录 一、MySQL介绍二、SQL语言三、MySQL安装与配置第一步:下载压缩文件第二步:解压第三步:配置第四步:登录 一、MySQL介绍 MySQL 是一个开源的关系型数据库管理系统,它使用 Structured Query Language&#xff0…

JDBC的增删改查

文章目录 前言创建数据库基础版JDBC实例添加JDBC实例删除JDBC实例修改JDBC实例查询 高级版JDBC实例添加JDBC实例删除JDBC实例修改JDBC实例查询 前言 JDBC编程步骤: 加载数据库驱动程序创建数据库连接对象创建Statement语句对象(createStatement、prepa…

谈谈聚簇索引与非聚簇索引

技术主题 聚簇索引是一种数据的存储方式,它的数据行只存放在索引(B+树)的叶子上,内部节点不存放数据。 聚簇索引 聚簇索引默认是主键,如果没有定义主键,innodb会选择一个唯一的非空索引代替。如果没有这种索引,innodb会隐式定义一个主键作为聚簇索引。 非聚簇索引 非…