#powershell #find #move
#powershell #Найти #переместить
Вопрос:
У меня есть длинный список операций поиска и перемещения, я хочу сократить сценарий, заменив следующие 2 длинные команды на 2 короткие переменные.
Короткие переменные:
$f = 'Get-ChildItem -Recurse -Filter'
$m = 'Move-Item -Force -Verbose -Destination V:MSL_pdf'
Длинные команды:
Get-ChildItem -Recurse -Filter GAS*.pdf | Move-Item -Force -Verbose -Destination V:MSL_pdfGAS
Get-ChildItem -Recurse -Filter GCA_00*.pdf | Move-Item -Force -Verbose -Destination V:MSL_pdfGCAGCA_00
Get-ChildItem -Recurse -Filter GCA_01*.pdf | Move-Item -Force -Verbose -Destination V:MSL_pdfGCAGCA_01
И это не работает:
$f GAS*.pdf | $m`GAS
$f GCA_00*.pdf | $m`GCAGCA_00
$f GCA_01*.pdf | $m`GCAGCA_01
Комментарии:
1. для этого и существуют функции … [ усмешка ]
Ответ №1:
Как сказал @Lee в комментарии, вы должны использовать функцию:
function GetAndMove($files, $dest)
{
$dest = "V:MSL_pdf$($dest)"
Get-ChildItem -Recurse -Filter $files | Move-Item -Force -Verbose -Destination $dest
}
# Now call the function
GetAndMove "GAS*.pdf" "GAS"
GetAndMove "GCA_00*" "GCAGCA_00"
GetAndMove "GCA_01*" "GCAGCA_01"
…
Комментарии:
1. Поскольку у меня теперь есть более 50 строк GetAndMove, могу ли я поместить одну функцию GetAndMove в начало и получить массив только с параметрами?
2. Да, в функции получаем массив, зацикливаемся на нем и выполняем перемещение, затем вызываем его один раз и отправляем массив.
3. Не могли бы вы быть так любезны, чтобы на самом деле написать такой код, большое спасибо