powershell - 查找角色位置并更新文件名

标签 powershell powershell-2.0

使用PowerShell 2.0可以使用什么函数在字符串中查找字符位置。

即如果使用SQL Server,我将使用CHARINDEX或PATINDEX。

我看着使用Select-String cmdlet,但它似乎并没有执行我需要的操作。

最终,我希望在文件名中找到一个“_”字符,并将所有内容都剥去以下“。”。 。

示例文件名 237801_201011221155.xml

最终解决方案,以下内容去除了当前目录中所有.xml文件中所有字符,包括<_>到<。>

Get-Childitem *.xml | Rename-Item -newname `
  { $_.name -replace $_.name.SubString($_.name.IndexOf("_"), `
       $_.name.LastIndexOf(".") - $_.name.IndexOf("_") ),''}

最终以 237801.xml

最佳答案

该字符串是.NET字符串,因此您可以使用.NET方法。在您的情况下:

$index = "The string".IndexOf(" ")

将返回3,这是字符串中第一个出现的空格。有关更多信息,请参见:http://msdn.microsoft.com/en-us/library/system.string.aspx

为您的需要尝试类似:
$s.SubString($s.IndexOf("_") + 1, $s.LastIndexOf(".") - $s.IndexOf("_") - 1)

或者您可以使用正则表达式:
if ($s -Match '(_)(.*)(\.)[^.]*$') {  $matches[2] }

(必须根据实际需要进行调整)。

关于powershell - 查找角色位置并更新文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5095782/

相关文章:

azure - 如何使用 powershell 将 Azure 虚拟网络子网输出到 csv 以进行单个或多个订阅

xml - 获取具有 "name"属性的 XML 元素的标记名称

xml - 如何使用Powershell从xml过滤以获取启动持续时间?

命令中的 Powershell 对象字段

PowerShell - 将 System.Security.SecureString 解码为可读密码

powershell - 为什么 `using` 范围可以在本地与 Start-Job 一起使用,但不能与 Invoke-Command 一起使用?

powershell - 以 PowerShell 对象表示法 (PSON) 保存哈希表

docker - 系统管理程序未运行?

windows - powershell 2.0重定向文件句柄异常

powershell - 剪贴板中的文本不是数组