假设我有一个文件database_partial.xml
。
我正在尝试从“_partial”以及扩展名(xml)中删除文件,然后将名称大写,使其变为DATABASE
。
Param($xmlfile)
$xml = Get-ChildItem "C:\Files" -Filter "$xmlfile"
$db = [IO.Path]::GetFileNameWithoutExtension($xml).ToUpper()
返回
DATABASE_PARTIAL
,但是我不知道如何剥离_PARTIAL部分。
最佳答案
您不需要GetFileNameWithoutExtension()
即可删除扩展名。 FileInfo
返回的Get-ChildItem
对象具有BaseName
属性,该属性为您提供不带扩展名的文件名。将其大写,然后删除“_PARTIAL”后缀。我还建议循环处理Get-ChildItem
的输出,以防万一它没有返回确切的结果。
Get-ChildItem "C:\Files" -Filter "$xmlfile" | ForEach-Object {
$_.BaseName.ToUpper().Replace('_PARTIAL', '')
}
如果下划线后的子字符串可能有所不同,请使用正则表达式替换而不是字符串替换,例如像这样:
Get-ChildItem "C:\Files" -Filter "$xmlfile" | ForEach-Object {
$_.BaseName.ToUpper() -replace '_[^_]*$'
}
关于powershell - 如何删除文件名的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55152664/