PowerShell脚本处理文本文件

Powershell语言的文件操作 在我们深入文件操作之前,首先了解一下 PowerShell 的基本概念。PowerShell 最初是为系统管理员设计的,旨在帮助他们更高效地管理 Windows 操作系统和应用程序。其核心理念是通过管道将命令连接在一起,从而实现复杂的操作。PowerShell 的基本单位是命令(Command),通常称为“cmdlet”。这些命令以“动词-名词”的格式命名,比如或。此外,PowerShell 还能够与 .NET Framework 无缝集成,使得其功能更加丰富。 阅读详情

前言

由于工作需要,需要将定义好的多个proto文件合并为一个,然后调用python脚本生成cpp文件,鉴于大家都工作在windows环境下,而且该需求定制化不高,所以考虑直接使用PowerShell脚本来做。这也是笔者第一次使用PowerShell来解决实际应用问题,是一次比较好的实践,下边贴出来具体的脚本代码,以供参考及记录。

#########################   使用方法   ##################################

# 1. 允许执行本地脚本 策略,以管理员身份打开一个PowerShell窗口并执行以下命令:
# Set-ExecutionPolicy RemoteSigned
# 2. 执行本脚本:
# ./batch.ps1
#########################################################################

$currLocation = Get-Location
Push-Location

$targetPath = $args[0];

if(($targetPath -eq "") -or ($targetPath -eq $null)){
	Write-Host "use default path ./.proto"
	$targetPath = "./.proto";
}

Set-Location -Path $targetPath;

# 中间文件
$metadataFile = "./_metadataTmp.txt";
$allInOneFile = "./_protoTmp.txt";
$defaltEncodingFile = "./_encodingTmp.txt";

# 最终文件
$targetFile = "./one.proto";

$keywordMatchReg = "syntax|package|option|import.*proto.*";

# 删除上次的生成文件
if((Test-Path $targetFile) -eq "True"){
	Remove-Item $targetFile;
}


# 处理所有proto文件
$allFile = Get-ChildItem -recurse *.proto;
foreach($file in $allFile) {
	#Write-Host $file.name;
	$newFileReader = New-Object System.IO.StreamReader($file);

	while($null -ne ($eachLine = $newFileReader.ReadLine())){
			if($eachLine -match $keywordMatchReg){
				# 元数据单独写文件
				#Write-Host " $eachLine"
				write-output $eachLine >> $metadataFile ;
			}else{
				# 定义数据写proto文件
				write-output $eachLine >> $allInOneFile ;
			}
		#Write-Host " $eachLine"
	}
	$newFileReader.Dispose();
}

# 合并数据,写入基础信息
write-output 'syntax = "proto3";' >> $defaltEncodingFile ;

# 合并元数据
foreach($line in Get-Content $metadataFile|Sort-Object -unique){
	#Write-Host "line: $line"
	if($line -match 'import.*google.*protobuf.*\.proto'){
		write-output $line >> $defaltEncodingFile ;
		continue;
	}
	if(($line -notmatch 'syntax.*') -and ($line -notmatch 'import.*')){
			write-output $line >> $defaltEncodingFile ;
			#Write-Host "filter: $line"
	}
}

# 合并消息定义
foreach($line in Get-Content $allInOneFile){
	write-output $line >> $defaltEncodingFile ;
}

# 转换编码
Get-Content $defaltEncodingFile|Set-Content $targetFile -Encoding UTF8

# 删除中间文件
Remove-Item $metadataFile
Remove-Item $allInOneFile
Remove-Item $defaltEncodingFile

# 设置回系统默认策略
#Set-ExecutionPolicy default
Pop-Location

Write-Host "merge complite......"
PowerShell脚本编写与Exchange管理实践 本文介绍了多个PowerShell脚本编写任务,包括读取文本文件内容、变量定义、日志配置检查、批量创建用户邮箱以及设置日志清理策略。涵盖了Get-Content、ConvertTo-SecureString、New-Mailbox等常用cmdlet的使用,并通过脚本实现Exchange Server中用户管理和日志维护功能。适合熟悉Windows PowerShell并希望提升Exchange自动化管理能力的IT人员。 阅读详情

相关推荐

Windows下高效合并文本文件的多种方法与实践

文本文件合并是数据处理中的基础操作,其核心原理是通过IO流将多个文件内容顺序写入目标文件。在Windows环境下,这一技术广泛应用于日志分析、数据预处理等场景,能显著提升数据整合效率。通过命令行工具(如copy/type命令)可实现快速合并,而PowerShell和Python脚本则提供更强大的编码控制与异常处理能力。针对大文件合并时的内存问题,流式读取和并行处理是关键技术方案。实际应用中需特别注意文件编码一致性、内存优化等工程实践要点,这些技巧在日志系统、ETL流程等场景中尤为重要。

weixin_33428613的博客 257

Win命令:powershell如何新增并编辑文件

请注意,上述命令中的路径应替换为您要创建或编辑的实际文件路径。此外,某些命令可能需要管理员权限才能在某些目录中创建或编辑文件。请记住,当操作敏感文件或系统文件时要小心,并以管理员权限运行 PowerShell 命令。追加内容:如果您希望追加内容而不是覆盖文件的现有内容,可以使用。如果您希望使用默认程序打开文本文件进行编辑,可以使用。命令来创建一个新文件。例如,要创建一个名为。这将使用默认文本编辑器打开指定的文本文件。命令来编辑文件的内容。

学亮编程手记 5128

Windows PowerShell 命令与脚本实践指南

本文详细介绍了Windows PowerShell 的常用命令和脚本编写技巧,涵盖文件系统操作、服务管理、WMI查询、证书管理、网络资源获取及自动化脚本示例,帮助用户提升系统管理和任务自动化的效率。

yhn4567890的博客 483

PowerShell 的文件操作

在本文中,我们将深入探讨 PowerShell 中的文件和目录操作,帮助管理员更好地理解和利用 PowerShell。在这个示例中,我们使用 Compress-Archive 命令来压缩两个文件和文件夹,并指定了源路径为 C:\temp\test 和 C:\temp\test.txt,目标路径为 C:\temp\test.zip。在这个示例中,我们使用 Expand-Archive 命令来解压缩一个 ZIP 文件,并指定了源路径为 C:\temp\test.zip 和目标路径为 C:\temp\test。

Kali与编程 3453

bat 批处理结合 PowerShell 拆分 txt 文本文件

本文介绍了三种在Windows环境下拆分文本文件的方法。方法一采用纯批处理脚本,兼容性好但效率较低;方法二使用PowerShell命令,大幅提升处理速度;方法三在方法二基础上增加进度显示功能,优化用户体验。文章详细说明了每种方法的实现原理、代码示例和适用场景,并提供了性能对比表,建议根据文件大小和系统环境选择合适方案。对于特殊编码文件,还介绍了相应的处理技巧。这三种方法覆盖了从基础到高级的文本拆分需求,可根据实际情况灵活选用。

小猫三两只。 2758

15、PowerShell 高级应用:文本处理与数学计算

本文深入探讨了 PowerShell 在文本处理与数学计算方面的高级应用。内容涵盖高效处理大型文本报告、生成重复文本及源代码的技巧、PowerShell 中的算术与复杂数学运算,以及二进制数据的处理方法。通过实际示例演示了如何生成包含统计信息的 HTML 报告,帮助用户更高效地完成系统管理和脚本编写任务。

y4z5a6b7的博客 150

windows使用vim编辑文本powershell

windows使用vim编辑文本

gusijin的博客 1830

使用Powershell删除文本文件中指定内容所在行以下的内容

在本文中,我们使用Powershell编写了一个脚本,用于删除文本文件中指定内容所在行以下的所有内容。记得根据你的实际需求修改脚本中的文件路径和目标内容,以适应不同的场景。在本文中,我们将使用Powershell编写一个脚本,用于删除文本文件中指定内容所在行以下的所有内容。在上面的代码中,我们首先指定了目标文件的路径和要删除的内容。如果找到了目标内容,我们将使用数组切片操作将目标行以下的内容删除,并使用。如果未找到指定的内容,脚本将输出未找到内容的消息。变量替换为你实际使用的文件路径和目标内容。

XrMask的博客 652

批量替换文本文件中字符串的3种方法

本文对比分析了三种批量替换文本文件字符串的技术方案:批处理脚本(Windows原生)、PowerShell(现代命令行)和Python(跨平台)。通过类图展示了它们的继承关系,详细解析了各方案的核心代码实现,并比较了适用场景、优势局限。建议根据实际需求选择:简单任务用批处理,Windows管理用PowerShell,跨平台复杂任务用Python。文中强调备份策略、性能优化、编码处理等最佳实践,为不同环境下的文本处理提供实用参考方案。

小猫三两只。 4593

protobuf-merge:多个protobuf文件合并成一个

原始气泡合并 protobuf合并到单个文件

Win10自动更新怎么永久关闭?有效的Win10强制更新关闭方法

之前小编为大家分享过一些Win10彻底关闭Windows Update自动更新的方法,主要是通过一些如设置流量计费或借助一些专门的小工具来实现,但往往会发现,Win10自动更新就像打不死的小强,不管怎么关闭,之后还是会自动更新,让不少小伙伴颇为不爽。今天小编带来了这篇改进型教程,通过全方位设置,彻底关闭Win10自动更新,感兴趣的小伙伴不妨试试吧。 ...

jianai0602的博客 108万+

PowerShell工具脚本---按行数切割大文本文件

我编写的PowerShell工具脚本,【按行数切割大(文本)文件】,生成n个小文件。 主要目的是为了能够让excel快速处理。或用脚本并发处理文本。 注意: 1 如果有必要,你可以先用其他工具,把大文本按行排序。 2 由于powershell本身就能自动识别win,linux换行。所以本脚本没有换行参数,也能正确分行。 3 win7+powershell2.0测试通过。 4 编码类...

weixin_30654583的博客 723

ubuntu安装FSL

1.下载fslinstaller.py 官网下载地址:https://fsl.fmrib.ox.ac.uk/fsldownloads_registration 或者去我的百度网盘取: 链接:https://pan.baidu.com/s/1d5eHm48oamFdYdKm84nifw 提取码:6ff9 2.将base环境改成python2.0版本 本来想在服务器安装,服务器没有sudo权限,网上很多教程都装不了,于是就自己安装虚拟机再装了一个ubuntu,然后安装了python2环境,再开始装fsl,fsl

qq_36421001的博客 4098

powershell 使用 chcp 65001 无效

当需要查看的文本文件或执行的批处理脚本有中文时,在cmd或powershell直接运行会乱码。cmd 可以输入chcp 65001切换成 utf-8 代码页来解决,但 powershell 不行,看上去操作成功了,但实际执行还是乱码。有一种解释是():chcp是源于cmd的命令,用于改变代码页CodePage,PowerShell中也可使用,但需在启动PowerShell时使用才有效,因为 .net会缓存启动时的代码页,在PowerShell会话中再使用chcp改变代码页会被忽略。

akatale的博客 1307

DaVinci Developer中枚举类型变量的创建与实战应用

本文详细介绍了在DaVinci Developer中创建和使用枚举类型变量的方法与实战应用。通过智能温控系统的案例,阐述了枚举类型在嵌入式开发中的核心价值,包括提升代码可读性、类型安全性和维护便捷性。文章还提供了枚举类型在状态机实现和多模块协同中的高级应用技巧,以及调试与优化的实用建议。

ik678901234的博客 511

混合动作空间在强化学习中的创新应用:PDQN与MPDQN算法解析

本文深入解析了强化学习中处理混合动作空间的PDQN与MPDQN算法。针对既有离散选择又有连续调节的复杂决策场景,PDQN通过参数化深度Q网络,巧妙结合DQN与DDPG进行交替优化;MPDQN则进一步改进,为每个离散动作提供专属参数评估以减少干扰。文章通过游戏、自动驾驶等实例阐述了其应用价值与面临的挑战。

efc123456的博客 864

cmd 文本文件分割_批处理版文本文件分割器 - BAT原创&转载 - 批处理之家 批处理_BAT脚本_PowerShell_VBS_CMD_DOS_Perl_Python - Powered by...

@echo offsetlocal enabledelayedexpansion:begincolor 31mode con lines=25 cols=60clsecho.echo ╭─────────╮echo |txt文本分割器 |echo ╰─────────╯echo ╔...

weixin_34175919的博客 958

VirtualBox虚拟机拖放文件总失败?手把手教你配置双向拖放与共享文件夹(Ubuntu版)

本文详细指导如何在VirtualBox的Ubuntu虚拟机中配置高效的数据交换方案。核心是安装VirtualBox Guest Additions,并在此基础上开启双向拖放与共享粘贴板功能,同时建立稳定的共享文件夹,彻底解决主机与虚拟机间文件传输失败的问题,构建无缝的跨系统工作环境。

weixin_29245767的博客 232

使用 PowerShell 脚本来删除空白行

本文介绍了PowerShell处理文本文件中空白行的多种方法。文章首先阐述了空白行在脚本开发中的影响,包括增大文件体积和干扰数据处理。核心解决方案是使用Where-Object过滤器配合Trim()方法删除空白行,并通过UML流程图详细说明了处理流程。此外还提供了三种可选方案:压缩连续空行、仅清理行首尾空白、以及结合空格压缩的进阶处理。文章包含专业术语表,涵盖PowerShell关键命令和运算符的发音、词源及用法示例。这些技巧可优化日志处理、数据导入等场景的工作效率,提升脚本编写的专业性。

小猫三两只。 2340

从AP到ADSP:高通8650 AudioReach中GSL-Passthru-GPR的数据通路剖析

本文深入剖析了高通骁龙8650平台AudioReach架构中,音频数据从应用处理器(AP)到音频数字信号处理器(ADSP)的完整传输路径。重点解析了GSL(Graph Service Layer)如何封装命令,并通过Passthru驱动与GPR(Generic Packet Router)协同工作,实现跨处理器的高效、异步数据交换,揭示了现代手机复杂音频系统背后的核心通信机制。

cherry的博客 536

26、多级快速多极子算法(MLFMA)在大规模电磁问题中的应用

本文探讨了多级快速多极子算法(MLFMA)在大规模电磁问题中的高效应用。通过分层分区策略,MLFMA在分布式内存架构上实现了高效并行化,能够求解包含数亿未知数的复杂电磁问题。文章分析了介质球体、半球透镜、周期性结构和损耗介质阵列等典型案例,验证了MLFMA的高精度与广泛适用性。同时,MLFMA被应用于实际场景如隐身目标Flamme的外部共振分析和含分裂环谐振器的超材料设计,展示了其在航空航天、超材料和生物医学等领域的广阔前景。未来发展方向包括算法优化、多物理场耦合和实时计算,进一步拓展其应用潜力。

t8u9v0w1x的博客 117

powershell 批量解压带密码的ZIP文件

01 前言 某天,有人问能不能批量解压N个带密码的ZIP文件(密码各不一样),一个一个解压太麻烦。想了一下,应该可以,那就搞起来。 02 正文 1、准备密码文件 格式要求: 1、文件编码为ASCII(一般系统默认) 2、包含两列:第一列为文件名(不带后缀,默认会加.zip后缀),第二列为对应的解压密码。中间以空格或TAB隔开。 如图: 2、准备DLL 解压工具很多,此处用Ionic.Zip....

HoKis 4938

基于深度学习DNN LSTM网络的光伏发电量预测 完整代码数据 可直接运行

基于深度学习DNN LSTM网络的光伏发电量预测 完整代码数据 可直接运行

2079

python文本去重复_批处理去除文本的重复行并保留空行 - BAT求助&讨论 - 批处理之家 批处理_BAT脚本_PowerShell_VBS_CMD_DOS_Perl_Python - Powe...

@echo offrem writen by pcl_testrem bat/ps1通用rem 测试前先备份源文件或文件夹type "%~f0"|powershell -noprofile -sta "-">nul ping /n 6 0&exit#>$global:files=@();$ListFile={$global:files=@();$button2.Enabled ...

weixin_32205057的博客 416

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

powershell像sql一样操作表数据

#powershell像sql一样操作表数据 cls @" 李1,1(1)班,英语,80 王1,1(1)班,英语,70 张1,1(1)班,英语,75 李1,1(1)班,数学,70 王1,1(1)班,数学,90 张1,1(1)班,数学,88 李1,1(1)班,语文,88 王1,1(1)班,语文,94 张1,1(1)班,语文,78 李2,1(2)班,英语,60 王2,1(2)班,英语,90 张2,1(2)班,英语,75 李2,1(2)班,数学,78 王2,1(2)班,数学,92 张2,1(2)班,数学,98 李

u014332402的博客 242

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

PowerShell实战4:批量修改AD账户E-Mail属性

功能:集团的AAA分公司并入BBB分公司,执行脚本将所有AAA员工的邮件地址由FirstName.LastName@AAA.com 变为 FirstName.LastName@BBB.com。 使用:在AD里将AAA公司员工的帐号导出至文本文件c:/name.txt,格式如下: Jackie Chen Michael Jordan Yao Ming … 源

jackiechen_vip的专栏 9809

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: CountDownLatch的应用
下一篇: java反射获取所有接口实现类
雕花の刺猬
博客等级 码龄10年 45粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值