2013-06-22 2 views
0

У меня есть следующие две строки в моем входном файле.powershell написать имя файла, содержащего строку

Пример входного файла (имя файла - file.txt)

String1 value 'string2' 
.. 
.. 
.. 
Call string1 

Желаемый результат: File.txt. (Т.е. имя файла)

В основном я хочу названия файла - если он содержит эти две строки 1) string1 value 'string2' 2) call string1

1) и 2) выше две разные линии и там может быть много линии между ними.

P.S. a) Я ищу 'string2'. 'string1' могут быть любыми 8 символами. Я не знаю, 'string1' б) 'string2' будет всегда в одинарные кавычки (') с) 'string2' всегда будет предшествовать строка 'value'

Благодарности

ответ

0

Следующий скрипт проходит через каждый файл в текущем каталоге и ищет файлы с 2 строками в контенте. Не уверен, что это соответствует вашей ситуации, но нетрудно настроить его для вашей среды.

dir *.* | foreach {if (get-content $_| Select-String -pattern "^[A-Za-z]{8} value 'string2'","Call string1") {"$_"}} 

Выход (в моей лаборатории) является:

C:\Documents\ManualScripts\test.txt 

test.txt это файл я создал для тестирования этого сценария. Содержание следующим образом:

abcdefgh value 'string2' 
hello world 
I love church 
I love Jesus 
call string1 
Alibaba, sesame open the door! 

Для @dazedandconfused Я считаю, что ваше возвращение сценария «string1», который является частью второй строки вместо имени файла он/она просила. Кроме того, ваш сценарий не отражает другой его потребности: «string1» может быть любым 8 символами ». Простите меня, если я ошибаюсь.

+0

Большое спасибо! Я почти там. Простите мою неопытность. Просто небольшое изменение, которое мне потребуется - в вашем скрипте. «abcdefgh» (первая строка перед «значением») должна соответствовать «string1» (после выписки вызова в 5-й строке). Другими словами, string1 должен быть равен «abcdefgh» - тогда только я хочу его в Output. Благодарю. – Powershel

+0

Нет проблем Я новичок тоже для powershell. Если это имеет смысл, пожалуйста, примите ответ :) – Peter

+0

Собственно, оригинальное сообщение было отредактировано существенно. Мой оригинальный ответ был актуальным в то время, но не так много сейчас. – dazedandconfused