Мне нужен код ниже, чтобы спросить пользователя, после того, как он извлечет и перечислит файлы, которые он будет перемещать в папки сезона, если они хотят продолжить или остановить.
$DstBase = "E:\series"
Get-ChildItem -Include *.mkv,*.mp4,*.srt,*.avi -Recurse -File|
Where-Object BaseName -match "^(?<Series>.*?)\.?S(?<Season>\d{1,2})\.?E(?<Episode>\d{2})"|
ForEach-Object {
$Destination = "{0}\{1}\Season {2:00}\" -f $DstBase,$Matches.Series.replace('.',' ').Trim(),[int]$Matches.Season
if (!(Test-Path $Destination)){MD $Destination -Force | Out-Null}
"Moving file [{0}] to [{1}]" -f $_.FullName,$Destination
$_ | Move-Item -Destination $Destination -Force
}
Я не знаю, есликод должен быть переписан, так как я пытался вставить подтверждение перед фактическим кодом Move и пытался перебить различные места. С изменением ниже, если ответ «Y», код будет продолжать спрашивать после каждого файла, но я хочу, чтобы он показывал, что он будет перемещать, и перемещает все найденные файлы, если ответ «Y»:
Я понимаюпроблема может заключаться в том, что я помещаю подтверждение в код цикла, поэтому оно также будет запускать подтверждение каждый раз, когда найден файл !! :
$confirmation = Read-Host "Are you Sure You Want To Proceed:"
if ($confirmation -eq 'y') {
# proceed
write-host ' you answered yes, will continue move !'
$_ | Move-Item -Destination $Destination -Force #move files to destination
return
}
write-host ' code will stop now '
break
}
Код найден здесь