问题描述
我在一个文件夹中有多个文件,我正在尝试制作一个执行此操作的脚本:
我希望脚本逐个文件地完成
。注意:所有文件扩展名都不同。
第一次尝试
Get-ChildItem -Exclude "*.ps1",".txt" | rename-item -NewName { $_.Name + ".txt" }
Get-ChildItem "*.txt" | Rename-Item -NewName { $_.Basename.Replace('.','_') + $_.Extension }
Get-ChildItem "*.txt" -Filter *.txt |
Foreach-Object {
$content = Get-Content -Raw $_.FullName
if ($content -match '(?<=serie=")(.*)(?=" folioFiscal)') {
$Matches[1]
}
$string1 = $Matches[1]
if ($content -match '(?<=folioFiscal=")(.*)(?=" UUID)') {
$Matches[1]
}
$string2 = $Matches[1]
Rename-Item -Path $_.FullName -NewName ($string1+"-"+$string2+"_"+$_.Name)
}
它起作用了,但是问题是,如果文件夹中已经有“ .txt”文件,那也会对其产生影响,所以我试图逐个文件地执行相同的操作,而不考虑“ .txt”文件
第二次尝试
Get-ChildItem -Exclude "*.ps1","*.txt" |
Foreach-Object {
Rename-Item -Path $_.FullName -NewName ( $_.Name + ".txt" )
Rename-Item -Path $_.FullName -NewName ($_.Basename.Replace('.','_') + $_.Extension)
$content = Get-Content -Raw $_.FullName
if ($content -match '(?<=serie=")(.*)(?=" folioFiscal)') {
$Matches[1]
}
$string1 = $Matches[1]
if ($content -match '(?<=folioFiscal=")(.*)(?=" UUID)') {
$Matches[1]
}
$string2 = $Matches[1]
Rename-Item -Path $_.FullName -NewName ($string1+"-"+$string2+"_"+$_.Name)
}
我遇到$_.FullName
的问题,因为在第一个Rename-Item
之后,它没有变化,而下一个Rename-Item
在寻找旧文件(没有“ .txt” )或我的想法。
这是错误:
对此有什么解决办法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)