如何在文本文件的开头添加文件名?

时间:2019-06-28 08:56:42

标签: powershell

对于800多个文件,我需要文件名中的信息才能包含在文本文件(实际上是.md文件)的内容中。

文件名始终具有相同的结构,例如0000-title-text-1-23.md;只有1-23部分会发生变化(这就是我需要的信息)。

在脚本方面,我是一个新手,但是我发现这对于PowerShell来说应该是一件容易的事-但是我并没有按照我想要的方式来工作。最接近的是什么:

Get-Childitem "C:\PATH\*.md" | ForEach-Object{
   $fileName = $_.BaseName
   Add-Content -Path .\*.md -Value $fileName
   }

但这会在目录中添加所有文件名,而不仅仅是文件本身中的一个。

我在做什么错了?

2 个答案:

答案 0 :(得分:3)

使用此代码执行您想要的操作,

  • 它将获得文件名的最后2部分和
  • 将其放在文件内容的开头。
Get-Childitem "C:\PATH\*.md" | ForEach-Object{
   $fileNameParts = ($_.BaseName).split('-')
   $info = $fileNameParts[-2] + '-' + $fileNameParts[-1]
   $info + (Get-Content $_ -Raw) | Set-Content $_
}

答案 1 :(得分:1)

尽管这样确实可以将内容添加到文件末尾,但这样的事情还是可以的:

#Get all the .txt or .md files in your location
Get-ChildItem -Filter "*.txt" | Foreach-Object{

    #Get the base name of the file
    $baseName = $_.BaseName

    #Split the base name
    $array = $baseName -Split '-'

    #Put the third and fourth element in the array into a separate variable
    #This will be added to the file
    $addToFile = $array[3] + '-' + $array[4]

    #Add the $addToFile variable to the file
    Add-Content $_.FullName -Value $addToFile
}