当前位置: 首页 > news >正文

一个批量文件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里面提。


(这里是文档结束。)

相关文章:

  • 【 Beautiful Soup (bs4) 详解】
  • 五、用例篇
  • 【二轮征稿】2025年IEEE第三届模式识别、机器视觉与人工智能国际会议(IEEE PRMVAI 2025)
  • 订阅不到topic排查方式
  • 上下文管理器需要实现哪两种方法以及相关应用
  • 进行性核上性麻痹患者,饮食 “稳” 健康
  • 消融实验_草稿
  • 使用setTimeout模拟setInterval
  • 山东省第二人民医院:基于DeepSeek的医疗AI智慧安全运营应用
  • 河北工程大学e2e平台,python
  • 使用Python写入JSON、XML和YAML数据到Excel文件
  • 高速电路设计概述
  • 代码大模型的发展:通义灵码与KwaiCoder的技术探讨
  • 分布式锁在秒杀场景中的Python实现与CAP权衡
  • 【Delphi】中共享锁实现
  • 腾讯视频安卓版如何开启4K超清画质-提升手机端观影清晰度体验
  • 操作系统 4.2-键盘
  • 论文学习:《利用图注意力网络增强单细胞多组学数据的整合》
  • 无锡东亭无人机培训机构电话
  • 安卓开发提示Android Gradle plugin错误
  • 优秀个人网站设计/怎么上百度搜索
  • 做网站建设有前途那/长沙网站提升排名
  • 演出备案在哪里查询/衡水网站seo
  • 大学网站建设专业/网络营销的特点分别是
  • 开发一款网站需要多少钱/百度游戏排行榜
  • 班组安全建设 网站/关键词指数批量查询