Нужен скрипт Powershell для удаления всех пробелов из * .msg файлов в каталоге и подкаталогах - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть целая группа пользователей, которые просто перетаскивают электронные письма из внешнего вида в общий сетевой ресурс. Эта сетевая папка SMB синхронизируется с OneDrive, и один диск не хочет иметь начальные пробелы в имени файла. Кроме того, некоторые имена файлов настолько велики, что Windows не позволяет мне что-либо с ним делать (более 255 символов). Я обнаружил, что простое переименование файлов и удаление всех пробелов делает свое дело. У меня есть тысячи файлов во многих подкаталогах, и они продолжают добавлять больше каждый день. Мне нужен простой скрипт, который я могу запускать каждый день на файловом сервере, который сканирует все файлы * .msg в каталоге и всех подкаталогах и просто удаляет все пробелы. Может кто-нибудь помочь мне с сценарием powershell, который выполнит это?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Следующий вариант ваш собственный ответ должен работать значительно лучше:

Get-ChildItem -Recurse -Filter *.msg |
  Rename-Item -NewName { $_.Name.Replace(' ', '') }

Примечание. Вы можете добавить -File к Get-ChildItem, чтобы ограничить совпадения файлами для дополнительной надежности, но на самом деле это немного замедляет команду (не сильно).

  • -Filter фильтрует по источнику и поэтому работает намного быстрее, чем использование -Path (подразумевается в вашей команде) или -Include, которые требуют, чтобы сам PowerShell проверял все элементов.

  • Использование блока сценария с задержкой привязки в качестве аргумента -NewName работает лучше, чем вызов командлета ForEach-Object, в котором блок сценария Rename-Item вызывается один раз каждые итерация .

Примечание:

  • Существует риск конфликта имен.

  • Попытки переименовать файл для себя - если имя не содержит пробелов - тихо игнорируются.

0 голосов
/ 08 ноября 2018

Этот скрипт прекрасно работает:

get-childitem -recurse * .msg | foreach {rename-item $ _ $ _. Name.Replace ("", "")}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...