一个批量文件Dos2Unix程序(Microsoft Store,开源)

        这个程序可以把整个目录的文本文件改成UNIX格式,源码是用C#写的。

目录

一、从Microsoft Store安装

二、从github获取源码

三、功能介绍

3.1 运行

3.2 浏览

3.3 转换

3.4 转换(无列表)

3.5 取消

3.6 帮助

四、源码解读

五、讨论和建议


一、从Microsoft Store安装

        Microsoft Store下载链接:ctDos2Unix - Windows官方下载 | 微软应用商店 | Microsoft Store

        打开此网页,从这里进入商店,可以免费安装试用版(网页里可能不会显示“免费试用”),试用版没有期限并且和正式版没有区别(不理解是吧,这是我用来做应用上架练习的。)

二、从github获取源码

        codetoys/Dos2Unix: txt tools ,Encoding conversionhttps://github.com/codetoys/Dos2Unix

        当然,此源码不包含用来打包MSIX的项目,仅包含程序本身的源码。

        简单程序,只有一个exe文件,依赖.net framework 4.8,应该不用额外安装。

        程序仅保存一个属性,具体保存在哪里你要看Properties.Settings.Default.Save()怎么回事了(一般在AppData的Local下面)。

        用visual studio 2022打开sln文件即可。

三、功能介绍

3.1 运行

        安装后会有个开始菜单项(Microsoft Store的标准行为),直接编译源代码就是直接运行就行了。

3.2 浏览

        选择一个目录,显示哪些需要转换(是文本文件),对此功能有意见?给我提呀!

3.3 转换

        会先生成一个备份目录然后将原来的目录里的文本文件转换为UNIX格式。

        备份目录和原目录在同一位置,如果有问题删掉原来的,把备份目录的名字改回去就可以了。

3.4 转换(无列表)

        如果文件太多转换比较慢,可以不在列表显示,这样会快很多(其实我已经优化过了,不会快很多的)。

3.5 取消

        浏览和转换都是由后台线程处理的,处理过程中浏览和转换按钮都是禁用的,处理结束才会恢复,在处理过程中可以点击“取消”按钮提前结束。

3.6 帮助

        只是个消息框:

        汗!这个程序最早是2007年写的,18年了,我说过C#是我的业余爱好。

四、源码解读

        好吧,核心就一个函数,对目录进行递归处理。

		public void FindAllFile(string path, bool checkonly, bool nolist){DirectoryInfo[] ChildDirectory;//子目录集FileInfo[] NewFileInfo;//当前所有文件DirectoryInfo FatherDirectory = new DirectoryInfo(path); //当前目录ChildDirectory = FatherDirectory.GetDirectories("*.*"); //得到子目录集NewFileInfo = FatherDirectory.GetFiles();//得到文件集,可以进行操作//MessageBox.Show(path, "当前目录");foreach (FileInfo fileInfo in NewFileInfo){if (bCancel) break;bool istext = ProcessFile(fileInfo.FullName, checkonly);++file_count;if (istext) ++file_text_count;if (!nolist){ListViewItem item = new ListViewItem(fileInfo.DirectoryName);item.SubItems.Add(fileInfo.Name);item.SubItems.Add(fileInfo.Extension);if (istext){if (checkonly){item.SubItems.Add(isLanguageZH ? "需转换" : "Conversion is required");}else{item.SubItems.Add("OK");}}else{item.SubItems.Add("");}UpdateUI(item);}}foreach (DirectoryInfo dirInfo in ChildDirectory){if (bCancel) break;FindAllFile(dirInfo.FullName, checkonly, nolist);}}

        处理文件也很简单:

		public bool ProcessFile(string file, bool checkonly){bool isASCII = true;FileStream filestream = new FileStream(file, FileMode.Open, FileAccess.Read);byte[] data = new byte[filestream.Length];filestream.Read(data, 0, (int)filestream.Length);filestream.Close();//MessageBox.Show(data.Length.ToString(),file);int i;for (i = 0; i < data.Length; ++i){if (data[i] == 0){//MessageBox.Show("非文本文件", file);isASCII = false;break;}}if (checkonly){return isASCII;}else{File.SetAttributes(file, File.GetAttributes(file) & ~FileAttributes.ReadOnly);if (!isASCII) return isASCII;}FileStream outfile = new FileStream(file, FileMode.Truncate, FileAccess.Write);for (i = 0; i < data.Length; ++i){if (i < data.Length - 1 && data[i] == '\r' && data[i + 1] == '\n') continue;outfile.WriteByte(data[i]);}//MessageBox.Show(outfile.Length.ToString(), file);outfile.Close();return isASCII;}

五、讨论和建议

        有问题跟我说啊,我会升级的。

        可以在这里提,也可以在github提,也可以在Microsoft Store里面提。


(这里是文档结束。)

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

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

相关文章

std::string` 类

以下是对 std::string 类中 修改操作 和 字符串操作 的示例代码&#xff0c;帮助你更好地理解这些函数的使用&#xff1a; 5. 修改操作 (1) operator 用于追加字符串、C 风格字符串或字符。 #include <iostream> #include <string>int main() {std::string str …

《Spring Boot+策略模式:企业级度假订单Excel导入系统的架构演进与技术实现》

前言 在数字化时代背景下&#xff0c;订单管理系统的高效性与灵活性成为企业竞争力的核心要素。本文档详细剖析了一个基于 策略模式 的度假订单导入系统&#xff0c;通过分层架构设计实现了多源异构数据的标准化处理。系统以 Spring Boot 为核心框架&#xff0c;结合 MyBatis …

SSRF漏洞公开报告分析

文章目录 1. SSRF | 获取元数据 | 账户接管2. AppStore | 版本上传表单 | Blind SSRF3. HOST SSRF一、为什么HOST修改不会影响正常访问二、案例 4. Turbonomic 的 终端节点 | SSRF 获取元密钥一、介绍二、漏洞分析 5. POST | Blind SSRF6. CVE-2024-40898利用 | SSRF 泄露 NTL…

告别 ifconfig:为什么现代 Linux 系统推荐使用 ip 命令

告别 ifconfig&#xff1a;为什么现代 Linux 系统推荐使用 ip 命令 ifconfig 指令已经被视为过时的工具&#xff0c;不再是查看和配置网络接口的推荐方式。 与 netstat 被 ss 替代类似。 本文简要介绍 ip addr 命令的使用 简介ip ifconfig 属于 net-tools 包&#xff0c;这个…

VLC快速制作rtsp流媒体服务器

1.安装vlc media player工具 2.打开后点击菜单 媒体->流 3.添加mp4视频&#xff0c;选择串流 4.选择 下一个 5.新目标选择 RTSP&#xff0c;点击添加按钮 6.端口和路径随便填写&#xff0c;如果推流失败就换个端口。一路操作下去 7.点击 流 按钮后&#xff0c;就可以看到下图…

基于 JavaWeb 的 SSM 在线视频教育系统设计和实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…

RK3568 基于Gstreamer的多媒体调试记录

文章目录 1、环境介绍2、概念理清3、提前准备4、GStreamer编译5、GStreamer基础介绍6、视频播放初体验7、视频硬编码7.1、h2647.2、h265 8、视频硬解码8.1、解码视频并播放解码视频并播放带音频 1、环境介绍 硬件&#xff1a;飞凌ok3568-c开发板 软件&#xff1a;原厂rk356x …

Mac学习使用全借鉴模式

Reference https://zhuanlan.zhihu.com/p/923417581.快捷键 macOS 的快捷键组合很多&#xff0c;相应的修饰键就多达 6 个&#xff08;Windows 系统级就 4 个&#xff09;&#xff1a; Command ⌘ Shift ⇧ Option ⌥ Control ⌃ Caps Lock ⇪ Fn 全屏/退出全屏 command con…

SpringBoot多线程,保证各个子线程和主线程事物一致性

SpringBoot多线程&#xff0c;保证各个子线程和主线程事物一致性 1、第一种写法1.1、TransactionalUntil工具类1.2、service业务类 2、第二种写法2.1、service业务类 1、第一种写法 1.1、TransactionalUntil工具类 import org.springframework.jdbc.datasource.DataSourceTra…

高并发的业务场景下,如何防止数据库事务死锁

一、 一致的锁定顺序 定义: 死锁的常见原因之一是不同的事务以不同的顺序获取锁。当多个事务获取了不同资源的锁,并且这些资源之间发生了互相依赖,就会形成死锁。 解决方法: 确保所有的事务在获取多个锁时,按照相同的顺序请求锁。例如,如果事务A需要锁定表A和表B,事务…

【从0到1学MybatisPlus】MybatisPlus入门

Mybatis-Plus 使用场景 大家在日常开发中应该能发现&#xff0c;单表的CRUD功能代码重复度很高&#xff0c;也没有什么难度。而这部分代码量往往比较大&#xff0c;开发起来比较费时。 因此&#xff0c;目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国…

力扣HOT100之链表: 148. 排序链表

这道题直接用蠢办法来做的&#xff0c;直接先遍历一遍链表&#xff0c;用一个哈希表统计每个值出现的次数&#xff0c;由于std::map<int, int>会根据键进行升序排序&#xff0c;因此我们将节点的值作为键&#xff0c;其在整个链表中的出现次数作为值&#xff0c;当所有元…

Transformer多卡训练初始化分布式环境:(backend=‘nccl‘)

Transformer多卡训练初始化分布式环境:(backend=‘nccl’) dist.init_process_group(backend=nccl)在多卡环境下初始化分布式训练环境,并为每个进程分配对应的 GPU 设备。下面为你逐行解释代码的含义: 1. 初始化分布式进程组 try:dist.init_process_group(backend=nccl) e…

使用Mybatis时在XML中SQL高亮显示的方法

如图所示&#xff0c;上方的SQL代码很像是一个字符串&#xff0c;那么如何把上方的SQL改成和下方一样的SQL,使得IDEA可以识别SQL方言呢&#xff1f; 1.选中SQL中的一部分代码&#xff0c;此时左侧会出现一个黄色的灯泡图案&#xff0c;点击2.选择这个注入语言或者引用

Spring Boot MongoDB自定义连接池配置

手打不易&#xff0c;如果转摘&#xff0c;请注明出处&#xff01; 注明原文&#xff1a;http://zhangxiaofan.blog.csdn.net/article/details/144341407 一、引言 在 Spring Boot 应用中使用 MongoDB 时&#xff0c;合理配置连接池可以显著提升数据库访问的性能和稳定性。默…

Tabnet介绍(Decision Manifolds)和PyTorch TabNet之TabNetRegressor

Tabnet介绍&#xff08;Decision Manifolds&#xff09;和PyTorch TabNet之TabNetRegressor Decision ManifoldsTabNet1.核心思想2. 架构组成3. 工作流程4. 优点 PyTorch TabNetTabNetRegressor参数1. 模型相关参数n_dn_an_stepsgammacat_idxscat_dimscat_emb_dim 2. 训练相关参…

图像变换方式区别对比(Opencv)

1. 变换示例 import cv2 import matplotlib.pyplot as plotimg cv2.imread(url) img_cut img[100:200, 200:300] img_rsize cv2.resize(img, (50, 50)) (hight,width) img.shape[:2] rotate_matrix cv2.getRotationMatrix2D((hight//2, width//2), 50, 1) img_wa cv2.wa…

Navicat分组、查询分享

1、分组 有些项目业务表比较多&#xff0c;多达几百张&#xff0c;如果通过人眼看&#xff0c;很容易头晕。这时候可以通过Navicat表分组来进行分类。 使用场景 按版本分组按业务功能分组 创建分组 示例&#xff1a;按版本分组&#xff0c;可以将1.0版本的表放到1.0中。 分组…

大模型在初治CLL成人患者诊疗全流程风险预测与方案制定中的应用研究

目录 一、绪论 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目的与内容 二、大模型技术与慢性淋巴细胞白血病相关知识 2.1 大模型技术原理与特点 2.2 慢性淋巴细胞白血病的病理生理与诊疗现状 三、术前风险预测与手术方案制定 3.1 术前数据收集与预处理 3.2 大模…

for循环的优化方式、循环的种类、使用及平替方案。

本篇文章主要围绕for循环,来讲解循环处理数据中常见的六种方式及其特点,性能。通过本篇文章你可以快速了解循环的概念,以及循环在实际使用过程中的调优方案。 作者:任聪聪 日期:2025年4月11日 一、循环的种类 1.1 默认有以下类型 原始 for 循环 for(i = 0;i<10;i++){…