#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, пожалуйста. Если мой ответ решит вашу проблему, подумайте о том, чтобы отметить его «принято», щелкнув галочку слева