1. 查找D盘下所有的bat文件,文件里面含有[email protected]的,将结果写入到result_20131010164624.txt
结果类似于
D:\DB_BAK\AA.BAT
D:\DB_BAK\CC\CC.BAT
脚本如下:
#This Script is useful for list the Character that list in file content
#执行方式如下:
#.\filesearch.ps1 -searchstring "寻找字符" -SearchLocation "寻找路径"
param
(
[string] $searchstring,
[string] $SearchLocation
)
Set-Location $SearchLocation
#转到POWERSHELLL 执行路径
$Filename=Get-ChildItem *.* -include *.txt -Recurse |Select-String -Pattern $searchstring|select filename
#采用递归方式获取当前文件中有SearchString的文件
$Logfile="Result_"+(get-date).tostring("yyyyMMddhhmmss")+".csv"
#生成日志文件名字
$Filename |Export-Csv -Path $Logfile -Encoding default
#将结果导出为日志
2. 查找D盘下所有的bat文件,文件中含有[email protected]的,请返回
文件的完整路径+行数(注:一行中有多个[email protected]字符串的算一行)
结果类似:
D:\db_bak\aa.bat 含指定的字符串”[email protected]”10行
D:\db_bak\cc\cc.bat 含指定的字符串[email protected]”20行
脚本如下:
#This Script is useful for list the Character that list in file content
#执行方式如下:
#.\filesearch.ps1 -searchstring "寻找字符" -SearchLocation "寻找路径"
param
(
[string] $searchstring,
[string] $SearchLocation
)
Set-Location $SearchLocation
#转到POWERSHELLL 执行路径
$Logfile="Result_"+(get-date).tostring("yyyyMMddhhmmss")+".csv"
#获取当前的生成日志文件名称
$filegroups=Get-ChildItem -include *.txt -Recurse|Select-String -Pattern $searchstring|Group-Object -Property:path|select name,count
#分组获取当前有相关的patten的参数的文件及文件拥有的行数
$filepropertys=@()
#定义文件属性数组为空
foreach($filegroup in $filegroups)
#根据查询到的文件进行轮询
{
$Filename=$filegroup.name
#得出文件的路径
$filecount="含指定的字符串"+$searchstring+" "+$filegroup.count+"行"
#告知字符串在指定文件中的哪一行
$fileproperty=New-Object psobject
#新建属性对象
$fileproperty|Add-member -MemberType NoteProperty -Name "Filename" -Value $Filename
#为对象新建列名
$fileproperty|Add-Member -MemberType NoteProperty -Name "Count" -Value $filecount
#为对象新建列名
$filepropertys=$filepropertys+$fileproperty
#将字符串数组队列进行自动累计
}
$filepropertys |Export-Csv -Path $Logfile -Encoding default
#将文件对象导出问日志文件
3. 查找D盘下所有的bat文件,文件中含有[email protected]的,请返回
文件的完整路径+ 指定字符串的个数
结果类似:
D:\db_bak\aa.bat 含指定的字符串[email protected] 12个
D:\db_bak\cc\cc.bat 含指定的字符串[email protected]”22 个
脚本如下:
#执行方式如下:.\filecountstring.ps1 -searchstring 寻找的字符串 -SearchLocation 寻找文件的目录
param
(
[regex] $searchstring,
[string] $SearchLocation
)
Set-Location $SearchLocation
#转到POWERSHELLL 执行路径
$Logfile="Result_"+(get-date).tostring("yyyyMMddhhmmss")+".csv"
#获取当前的生成日志文件名称
$filetotals=(Get-ChildItem -Include *.txt -Recurse).fullname
#获取文件及文件路径
$fileproperty=@()
#定义属性为空
foreach($filetotal in $filetotals)
#根据日志查询
{
$FileALLP=New-Object psobject
#新建PS对象
$filecontent=Get-Content -Path $filetotal
#获取的对象的目录文本
$filecount=(Select-String -Pattern $searchstring -InputObject $filecontent -AllMatches).matches.count
#根据寻找的字符串统计字符串个数
$filecontentstring="含指定的字符串"+$searchstring+" "+$filecount+"个"
#求出日志格式
$FileALLP |Add-Member -MemberType NoteProperty -Name "文件路径" -Value $filetotal
#添加对象的文件路径属性
$FileALLP |Add-Member -MemberType NoteProperty -Name "拥有字符串数量" -Value $filecontentstring
#添加拥有字符串数量属性
$fileproperty=$fileproperty+$FileALLP
#将对象进行数组累加
}
$fileproperty | Export-Csv -encoding default -Path $Logfile
将日志导出为相关的文本文件
4. 查找D盘下所有的bat文件,文件中含有[email protected]的,
将xxx@163.com替换为 xxx@163.com
param
(
[regex] $searchstring,
[regex] $replcestring,
[string] $SearchLocation
)
Set-Location $SearchLocation
#转到POWERSHELLL 执行路径
$Logfile="Result_"+(get-date).tostring("yyyyMMddhhmmss")+".csv"
#获取当前的生成日志文件名称
$filetotals=(Get-ChildItem -Include *.txt -Recurse).fullname
foreach($filetotal in $filetotals)
{
$filecontent=Get-Content -Path $filetotal
$filecontent -replace $searchstring,$replcestring |Set-Content $filetotal
}