Move-Item при переименовании файлов и «очистке» имени файла с помощью регулярных выражений - PullRequest
1 голос
/ 23 марта 2012

Я использую скрипт для перемещения файлов из одного каталога в другой.Это также удаляет некоторый текст через некоторую работу RegEx.Тем не менее, хотя у меня относительно короткий сценарий, я думаю, что все еще могу сделать лучше.Ниже приведен мой пример сценария.

$Source = "C:\temp\test\source"
$Dest = "C:\temp\test\dest"

get-childitem $Source\*.* | rename-item -newname {$_.name -replace '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}IP\.',''} -WhatIf
move-item $Source\*.* $Dest -WhatIf

Теперь это работает, но, как вы можете видеть, это две строки, и я уверен, что это можно сделать в одной.Я думаю, что "не получаю ценность своих денег" из команды move-item.Как бы я это сделал, не выполняя отдельную команду rename-item?Если вам нужна дополнительная информация, дайте мне знать, и я посмотрю, что я могу сделать.Я довольно новичок в материалах PS и RegEx.Я больше занимаюсь пакетными файлами, но не думаю, что он справится с RegEx.Вот почему я пытаюсь PS.

1 Ответ

5 голосов
/ 23 марта 2012

Вы можете использовать регулярное выражение в параметре назначения командлета Move-Item. Это должно сделать работу за вас. Адаптируем ваш пример:

$Source = "C:\temp\test\source"
$Dest = "C:\temp\test\dest"

get-childitem $Source | Foreach-Object {
  Move-Item -Path $_.FullName -Destination "$Dest\$($_.name -replace '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}IP\.','')" -WhatIf
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...