У меня есть дерево каталогов, содержащее ~ 150 файлов с определенным расширением (.php), организованных в разные папки. Некоторые из этих файлов отмечены в строке 2, чтобы указать определенный статус. Я знаю, что эта отметка всегда находится на строке 2, и она всегда следует определенному формату.

То, что я ищу, - это что-то (команда, скрипт, программа), которое может искать в каталоге эту метку и выводить мне вывод, подобный этому, но в простом для манипулирования формате:

пример вывода

Идеальным решением было бы решение, которое может предоставить список ВСЕХ файлов .php со строкой 2 файла рядом с именем файла. Приведенный выше список делает это только для сопоставленных файлов.

Я пробовал использовать find в цикле for :

for %f in (*.php) do find "Oracle Status" %f

Но это только ищет текущий каталог, и не форматирует это дружественным способом.

1 ответ1

1

Если вы согласны с использованием PowerShell, этот скрипт должен выполнить эту работу:

Get-ChildItem *.php -Recurse | ForEach-Object {
 $lines = Get-Content $_ -TotalCount 2
 If ($lines.Length -GT 1 -And $lines[1].Length -GT 1 -And $lines[1].Contains('Oracle Status:')) {
  New-Object -TypeName PSObject -Prop @{'FilePath' = $_.FullName; 'StatusLine' = $lines[1]}
 }
}

Он выдает в консоли вывод, который выглядит следующим образом:

Результаты

Показанная здесь версия искала файлы .txt со строкой Status: но вставленная выше делает то, что вы хотите.

Сохраните сценарий как файл .ps1 , например, phpstatus.ps1 . Если вы никогда ранее не запускали сценарий PowerShell, вам нужно будет выполнить эту команду один раз, чтобы разрешить выполнение сценариев:

Set-ExecutionPolicy Unrestricted -Scope CurrentUser

Как только это будет сделано, вы можете вызвать скрипт из командной строки PowerShell, набрав .\ затем его имя, например .\phpstatus.ps1 . (Работы по завершению вкладки Поскольку выходные данные представляют собой набор объектов PowerShell, вы можете использовать для них стандартные команды управления данными PowerShell.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .