Как добавить имя файла (начало) текстового файла? - PullRequest
0 голосов
/ 28 июня 2019

Для более 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 ]

3 голосов
/ 28 июня 2019

Используйте этот код, чтобы делать то, что вам нужно,

  • , он получит последние 2 части вашего имени файла и
  • поместит его в начало содержимого вашего файла.
Get-Childitem "C:\PATH\*.md" | ForEach-Object{
   $fileNameParts = ($_.BaseName).split('-')
   $info = $fileNameParts[-2] + '-' + $fileNameParts[-1]
   $info + (Get-Content $_ -Raw) | Set-Content $_
}
1 голос
/ 28 июня 2019

Нечто подобное будет работать, хотя оно добавляет содержимое в конец файла:

#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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...