2016-10-03 3 views
0

Как я могу программно получить путь к файлу, если он находится в подкаталоге?Как получить путь к файлу в каталоге с несколькими подкаталогами

Пример:

main_dir 
    | 
    sub_main_dir 
     |  
     another_sub 
      | 
      File 

Я хочу, чтобы захватить каталог в файл и вызвать его, я знаю, как вызвать файл с Invoke-Item, но то, что мне нужно, это каталог, файл находится, в порядке правильно ссылаться на него:

function search_for_file($directory, $fileName){ 
    if (search_dir($directory) -contains $fileName){ 
    say("Package found. Invoking package, follow the steps in the setup wizard.") 
    invoke $fileName 
    } Else { 
    say("Did not find package, check spelling and try again") 
    } 
} 

Ошибка:

Invoke-Item : Cannot find path 'C:\dev\testfiles MOCK_DATA_XCL.xlsx\' because 
it does not exist 

ответ

1

Это будет искать $directory и его поддиректории для первого $fileName он находит, а затем вызывает его.

Get-ChildItem -Path $directory -Recurse -Filter $fileName ` 
| Select-Object -First 1 -ExpandProperty FullName ` 
| Foreach-Object { Invoke-Item $_ } 

Ответ на комментарий

Если вы просто хотите, чтобы получить путь к файлу, то вы можете просто удалить последнюю трубу и присвоить результат переменной:

$path = 
    Get-ChildItem -Path $directory -Recurse -Filter $fileName ` 
    | Select-Object -First 1 -ExpandProperty FullName 
+0

I скорее всего, не вызовет его в этой функции, у меня есть еще одна функция, которая будет выполнять вызов, все, что мне понадобится, - это полный путь к файлу, чтобы вызвать его оттуда. Таким образом, в основном мне нужен способ сохранить полный путь к переменной и использовать его позже. – Pyth0nicPenguin

+1

'$ FullPath = Get-ChildItem -Path $ directory -Recurse -Filter $ fileName | Select-Object -First 1 -ExpandProperty FullName' – BenH

Смежные вопросы