Команда Powerswell для перехода к следующей папке

#powershell

Вопрос:

Есть ли в Powershell команда для перехода к следующей папке? Моя проблема в том, что Powershell должен искать определенный файл в папке с несколькими вложенными папками и, когда он найден, перемещает его. Пример:

C:Test1errortest.data

Это следует перенести в

C:Test1data

а потом я возвращаюсь с компакт-диском. . компакт-диск. .

C:Test

Здесь мне понадобится команда, которая автоматически загружается в

C:Test2error

И вот моя проблема, как мне автоматически перейти к следующей папке, не указав ее. Чтобы я вставил команду в цикл?

Спасибо за помощь 🙂

Ответ №1:

Используйте Get-ChildItem для перечисления вложенных каталогов C:Test , а затем используйте цикл, чтобы просмотреть их один за другим:

 $targetFolders = Get-ChildItem -Path C:test -Directory

foreach($targetFolder in $targetFolders){
  # Switch to target folder
  Push-Location -LiteralPath $targetFolder.FullName

  # Check if file is there
  if(Test-Path errortest.data){
    # If so, move it
    Move-Item errortest.data -Destination data
  }

  # Leave directory again
  Pop-Location
}
 

Комментарии:

1. Спасибо. Но что это Push-Location -LiteralPath $targetFolder.FullName значит?

2. @lelekMaster Push-расположение предназначено для переключения местоположений при запоминании предыдущего местоположения. Вот почему нам не нужно передавать какие-либо аргументы в Pop-Location, он знает, где мы были.

3. @lelekMaster, пожалуйста. Если мой ответ решит вашу проблему, подумайте о том, чтобы отметить его «принято», щелкнув галочку слева