Переместить файлы, когда они содержат определенное слово?

Несколько вещей.

  1. убедитесь, что включен автозапуск (IB на вкладке «Инспектор файлов»)
  2. Убедитесь, что вы НЕ вносите никаких изменений, которые связаны с границы, рамки и т. д. - все это делается с помощью автоматических ограничений теперь
  3. Убедитесь, что вы держитесь подальше от AutoResizingMask. Это будет соответствовать вашим новым настройкам. Если все сделано правильно, теперь вы можете разместить свою кнопку, и она будет работать отлично. Вот как это делается.

Эта ошибка указывает, что ни ваш ниб, ни элемент управления внутри этого nib НЕ используют автоматическую компоновку.

1
задан James C. 17 January 2019 в 11:32
поделиться

2 ответа

$source = 'Z:\Documents\16_Med._App\Aufträge\RuheEKG_24HBP_Skript\Ursprung_test'   
$dest = 'c:\dest'
Get-ChildItem $source -filter *.txt -recurse | Select-String -List -Pattern "24BHD" | ForEach-Object {
    Move-Item $PSItem.Path -Destination $dest
}

Редактировать: Этот пример лучше, только с использованием труб. Выходные данные Get-ChildItem передаются по каналу Select-String, который отфильтровывает файлы, содержащие «24BHD» в содержимом. Соответствующие файлы передаются в Move-Item. В приведенном выше примере я использовал Foreach-Object, потому что я думал, что Move-Item не может обработать вывод Select-String. В этом не было необходимости, потому что привязка параметров PowerShell прекрасно это решает.

Есть еще одна оговорка: если в структуре папок $ source присутствуют повторяющиеся имена файлов, Move-Item столкнется с конфликтом имен в папке $ dest

$source = 'Z:\Documents\16_Med._App\Aufträge\RuheEKG_24HBP_Skript\Ursprung_test'   
$dest = 'c:\dest'

Get-ChildItem $source -filter *.txt -recurse | 
  Select-String -List -Pattern "24BHD" |
  Move-Item -Destination $dest

Подробнее о привязке параметров можно найти здесь : https://4sysops.com/archives/parameter-binding-in-the-powershell-pipeline/

0
ответ дан Gert Jan Kraaijeveld 17 January 2019 в 11:32
поделиться

Вы очень близки, но синтаксис foreach не делает то, что вы думаете.

Вам необходимо использовать foreach ($item in $hans), где $hans - это набор файлов, а $item представляет каждый «файл» в массиве во время «цикла».

(имя переменной $item может быть любым, это просто пример, который я использовал)

Свойство FullName содержит полный путь к файлу, который необходим для для [ 117].

Затем используйте Move-Item, если Select-String возвращает совпадение:

$source = 'Z:\Documents\16_Med._App\Aufträge\RuheEKG_24HBP_Skript\Ursprung_test'
$destination = 'C:\Destination'
$pattern = '24BHD'

$hans = Get-ChildItem $source -filter *.txt -recurse 

foreach($item in $hans) {
    if (Select-String -list -pattern $pattern -path $item.fullname) {
        Move-Item -Path $item.fullname -Destination $destination
    }
}
0
ответ дан James C. 17 January 2019 в 11:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: