【问题标题】:Powershell - Pulling string from txt, splitting it, then concatenating it for archivePowershell - 从 txt 中提取字符串,将其拆分,然后将其连接起来存档
【发布时间】:2016-09-24 21:57:33
【问题描述】:

我有一个应用程序,我从 git status 获取新\修改文件的列表,然后我从该文件中获取不完整的字符串,将它们与根目录文件路径连接,然后将这些文件移动到存档。我有一半的工作,但我使用 powershell 的性质不提供错误报告,并且该过程显然出错了。这是我尝试使用的代码。 (它已经经历了几次迭代,请原谅注释掉的部分)基本上我试图从 txt 文件中获取内容,然后替换?使用 \ (由于某种原因,创建 txt 的过程喜欢正斜杠......),然后在空格处拆分该字符串。我感兴趣的字符串的唯一部分是最后一部分,我试图将其与已知的工作根目录连接,然后我试图将它们移动到存档位置。在你问之前,这是我们不愿意在 git 中跟踪的东西,由于文件的性质(它们是带有时间戳的测试输出,我们希望在每次测试运行的基础上保存它们,而不是在 git 中)我我对 powershell 还是很陌生,而且我的头撞在这块石头上太久了。

    Get-Content $outfile | Foreach-Object
{
  #$_.Replace("/","\")
  #$lineSplit = $_.Split(' ')
  $_.Split(" ")
  $filePath = "$repo_dir\$_[-1]"
  $filePath.Replace('/','\')
  "File Path Created: $filePath"
  $untrackedLegacyTestFiles += $filePath
}


Get-Content $untrackedLegacyTestFiles | Foreach-Object
  {
    Copy-Item $_ $target_root -force
    "Copying File: $_ to $target_root"
  }
}

$outfile 是一个文本文件,其中每一行都有一个部分文件路径,通向一个由我们使用的测试应用程序生成的 txt 文件。此信息由 git 提供,因此在 $outfile txt 文件中如下所示:

!! Some/File/Path/Doc.txt

“!!”意思是 git 将其视为一个新文件,但它可能是从“M”到“??”的几个字符。这就是为什么我试图在空格上拆分它并只取最后一个元素。 我想要的输出是从 $outfile (Some/File/Path/Doc.txt) 中获取拆分字符串的最后一个元素,并将其与 $repo_dir 连接以形成完整的文件路径,然后移动 Doc.txt到存档位置 ($target_root)。

【问题讨论】:

  • 您能否提供来自$outfile 的示例字符串和您想要的输出?另外,你卡在哪里了?
  • 添加了 $outfile 的示例。希望对你有帮助
  • 是的。希望我的回答能帮到你。

标签: string powershell split


【解决方案1】:

要在 PowerShell 中组合路径,您应该使用 Join-Path cmdlet。要从字符串中提取路径,可以使用regex:

$extractedPath = [regex]::Match('!! Some/File/Path/Doc.txt', '.*\s(.+)$').Groups[1].Value
$filePath = Join-Path $repo_dir $extractedPath

Join-Path cmldet 还将所有正斜杠转换为反斜杠,因此无需替换它们 :-)。

您的整个脚本可能如下所示:

Get-Content $outfile | Foreach-Object {  
    $path = Join-Path $repo_dir ([regex]::Match($_, '.*\s(.+)$').Groups[1].Value)
    Copy-Item $path $target_root -force
} 

如果您不喜欢在代码中使用regex,也可以使用以下方法提取路径:

$extractedPath = '!! Some/File/Path/Doc.txt' -split ' ' | select -Last 1

$extractedPath = ('!! Some/File/Path/Doc.txt' -split ' ')[-1]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多