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

news2025/4/16 23:05:20

        这个程序可以把整个目录的文本文件改成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.coloradmin.cn/o/2333284.html

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

相关文章

无法读取库伦值文件节点解决方案

读取库伦值的目的是为了换算成电流&#xff0c;量化场景功耗用途 1.报错日志 /power_log/debuglogger$ adb shell dmesg | grep -Ei "avc..system_server"[ 79.942272] logd.auditd: type1400 audit(1744279324.832:7149): avc: denied { read } for comm"…

Linux系统学习Day2——在Linux系统中开发OpenCV

一、OpenCV简介 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的跨平台计算机视觉和机器学习库&#xff0c;广泛应用于图像处理、视频分析、物体检测等领域。它提供了丰富的算法和高效的工具集&#xff0c;支持C、Python等多种语言&#xff0c…

【图像分类】【深度学习】图像分类评价指标

【图像分类】【深度学习】图像分类评价指标 文章目录 【图像分类】【深度学习】图像分类评价指标前言二分类评价指标Accuracy(准确率/精度)Precision(精确率/查准率)Recall(召回率/查全率)F1-ScoreAUC-ROC曲线(Area Under the Curv-Receiver Operating Characteristic Curve)二…

蓝桥杯单片机刷题——按键控制距离显示精度

设计要求 驱动超声波传感器&#xff0c;启动距离测量功能,并将其结果显示到数码管上&#xff0c;距离数据单位为m。 按键“S4”定义为“切换”按键&#xff0c;通过此按键切换距离的显示精度&#xff08;一位或两位小数&#xff09;。切换顺序如图所示。 数码管显示格式如下图…

el-time-picker标签的使用

需求&#xff1a; 实现培训日期&#xff0c;用户可以选择某一天的日期&#xff0c;这个比较简单 <el-form-item label"培训日期" prop"startTime"><el-date-picker clearablev-model"form.startTime"type"date"placeholder…

云平台一键部署【OmniGen】多功能图像生成模型(2025更新版)

OmniGen 是智源推出的一款全新的扩散模型架构&#xff0c;专注于统一图像生成。它简化了图像生成的复杂流程&#xff0c;通过一个框架处理多种任务&#xff0c;例如文本生成图像、图像编辑和基于视觉条件的生成等。此外&#xff0c;OmniGen 通过统一学习结构实现了知识迁移&…

算法训练之动态规划(四)——简单多状态问题

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

uniapp离线打包提示未添加videoplayer模块

uniapp中使用到video标签&#xff0c;但是离线打包放到安卓工程中&#xff0c;运行到真机中时提示如下&#xff1a; 解决方案&#xff1a; 1、把media-release.aar、weex_videoplayer-release.aar放到工程的libs目录下; 文档&#xff1a;https://nativesupport.dcloud.net.cn/…

机器人零位标定修正流程介绍

如果想看运动学标定可以看看 机器人运动学参数标定, 一次性把运动学参数和零位标定等一起标定求解. 1. 零位标定 零位标定是机器人运动学标定中的一个重要步骤&#xff0c;其目的是校正机器人关节的初始位置误差。以下是需要进行零位标定的主要原因&#xff1a; 制造误差 在机…

深入 C++ 线程库:从创建到同步的探索之旅

目录 创建多线程 获取线程返回值 1.传指针 2.传引用 原子操作 互斥量 互斥量&#xff08;Mutex&#xff09;的基本概念 mutex类型介绍 锁的类型 互斥锁&#xff08;Mutex&#xff09; 自旋锁&#xff08;Spin Lock&#xff09; 读写锁&#xff08;Read - Write Lo…

【2025年认证杯数学中国数学建模网络挑战赛】A题 解题建模过程与模型代码(基于matlab)

目录 【2025年认证杯数学建模挑战赛】A题解题建模过程与模型代码&#xff08;基于matlab&#xff09;A题 小行星轨迹预测解题思路第一问模型与求解第二问模型与求解 【2025年认证杯数学建模挑战赛】A题 解题建模过程与模型代码&#xff08;基于matlab&#xff09; A题 小行星轨…

Matlab 分数阶PID控制永磁同步电机

1、内容简介 Matlab 203-分数阶PID控制永磁同步电机 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略

4185 费马小定理求逆元

4185 费马小定理求逆元 ⭐️难度&#xff1a;简单 &#x1f31f;考点&#xff1a;费马小定理 &#x1f4d6; &#x1f4da; import java.util.Scanner; import java.util.Arrays;public class Main {static int[][] a;public static void main(String[] args) {Scanner sc …

界面控件DevExpress WinForms v25.1新功能预览 - 聚焦用户体验升级

DevExpress WinForms拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜…

卷积神经网络(CNN)基础

目录 一、应用场景 二、卷积神经网络的结构 1. 输入层&#xff08;Input Layer&#xff09; 2. 卷积层&#xff08;Convolutional Layer&#xff09; 3. 池化层&#xff08;Pooling Layer&#xff09; 最大池化&#xff08;max_pooling&#xff09;或平均池化&#xff08;…

Android Spotify-v9.0.36.443-arm64-Experimental Merged版

Android Spotify 链接&#xff1a;https://pan.xunlei.com/s/VONXTdIv9d4FnAiNMMliIAEJA1?pwdxt7q# Android Spotify-v9.0.36.443-arm64-Experimental Merged版 享受高达256kbps的AAC音频。

LLM之Agent(十六)| MCP已“过时”?Google近期推出Agent2Agent 协议 (A2A)

如今&#xff0c;企业越来越多地构建和部署自主代理&#xff0c;以帮助扩展、自动化和增强整个工作场所的流程 - 从订购新笔记本电脑到协助客户服务代表&#xff0c;再到协助供应链规划。 为了最大限度地发挥代理 AI 的优势&#xff0c;这些代理能够在一个动态的、多代理的生态…

Transformer 训练:AutoModelForCausalLM,AutoModelForSequenceClassification

Transformer 训练:AutoModelForCausalLM,AutoModelForSequenceClassification 目录 Transformer 训练:AutoModelForCausalLM,AutoModelForSequenceClassification`AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)`功能概述参数解释`AutoModelForSequen…

Java学习总结-端口-协议

端口号&#xff1a;一个16位的二进制&#xff0c;范围是0-65535 端口分类&#xff1a; 周知端口&#xff1a;0-1023&#xff0c;被预先定义的知名应用占用&#xff08;如&#xff1a;HTTP占用80&#xff0c;FTP占用21&#xff09; 注册端口&#xff1a;1024-49151&#xff0…

克魔助手(Kemob)安装与注册完整教程 - Windows/macOS双平台指南

iOS设备管理工具克魔助手便携版使用全指南 前言&#xff1a;为什么需要专业的iOS管理工具 在iOS开发和设备管理过程中&#xff0c;开发者经常需要突破系统限制&#xff0c;实现更深层次的控制和调试。本文将详细介绍一款实用的便携式工具的使用方法&#xff0c;帮助开发者快速…