|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Переименование XML по содержанию файла. |
|
PowerShell - [решено] Переименование XML по содержанию файла.
|
Новый участник Сообщения: 7 |
Профиль | Отправить PM | Цитировать подскажите как переименовать папку xml файлов по определенному xpath.
Cls $OriginalLocation = "C:\xml\" $AddressXPath = "/Extract/ReestrExtract/ExtractObjectRight/ExtractObject/ObjectDesc/Address/Content" if (Test-Path($OriginalLocation)) { Select-Xml -Path (Get-ChildItem -Recurse -Path $OriginalLocation -Include @("*.xml") | where {! $_.PSIsContainer}) -Xpath $AddressXPath | ForEach-Object -Process { $Address = $_.Node.InnerText.ToString() $OriginalFullname = $_.Path $NewFilename = $Address + ".xml" Rename-Item -Path $OriginalFullname -NewName $NewFilename -Verbose } } Rename-Item : Процесс не может получить доступ к файлу, так как этот файл занят другим процессом. строка:8 знак:12 + Rename-Item <<<< -Path $OriginalFullname -NewName $NewFilename -Verbose + CategoryInfo : WriteError: (C:\xml\1 - копия.xml:String) [Rename-Item], IOException + FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand |
|
Отправлено: 11:51, 15-08-2017 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Скачать handle - https://docs.microsoft.com/en-us/sys...wnloads/handle и посмотреть, какой процесс держит файл.
|
Отправлено: 12:09, 15-08-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать если перед переименованием вставить строчку & 'D:\handle.exe' -nobanner "C:\xml\1.xml" то
powershell.exe pid: 5636 type: File 3B8: C:\xml\1.xml ПОДРОБНО: Выполнение операции "Переименование файла" над целевым объектом "Элемент: C:\xml\1.xml Назначение: C:\xml\ул Чайковского, д 15, кв 67.xml". Rename-Item : Процесс не может получить доступ к файлу, так как этот файл занят другим процессом. строка:8 знак:12 + Rename-Item <<<< -Path $OriginalFullname -NewName $NewFilename -Verbose + CategoryInfo : WriteError: (C:\xml\1.xml:String) [Rename-Item], IOException + FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand |
Отправлено: 12:59, 15-08-2017 | #3 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать $OriginalLocation = "C:\xml\" $AddressXPath = "/Extract/ReestrExtract/ExtractObjectRight/ExtractObject/ObjectDesc/Address/Content" if (Test-Path $OriginalLocation) { $obj = Select-Xml -Path (Get-ChildItem -Recurse -Path $OriginalLocation -Include @("*.xml") | where {! $_.PSIsContainer}) -Xpath $AddressXPath | Select Path,@{n="Address";e={$_.Node.InnerText.ToString()}} foreach($i in $obj) { Rename-Item -Path $i.Path -NewName $i.Address -Verbose } } |
Отправлено: 13:20, 15-08-2017 | #4 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать спасибо большое. подскажите еще как сделать чтоб расширение xml добавлял. а то сейчас просто адресс без расширения.
|
|
Отправлено: 13:26, 15-08-2017 | #5 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 13:29, 15-08-2017 | #6 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать а можно чтобы символы запрещенные в имени файлов заменялись на тире. а то они не переименовываются.
|
Отправлено: 09:48, 18-01-2018 | #7 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 09:59, 18-01-2018 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Kazun:
|
|
Отправлено: 10:07, 18-01-2018 | #9 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Цитата Kazun:
cls $OriginalLocation = "C:\xml\" $AddressXPath = "/Extract/ReestrExtract/ExtractObjectRight/ExtractObject/ObjectDesc/Address/Content" if (Test-Path $OriginalLocation) { $obj = Select-Xml -Path (Get-ChildItem -Recurse -Path $OriginalLocation -Include @("*.xml") | where {! $_.PSIsContainer}) -Xpath $AddressXPath | Select Path,@{n="Address";e={$_.Node.InnerText.ToString()}} foreach($i in $obj) { Rename-Item -Path $i.Path -NewName "$($i.Address).xml" -Verbose } } |
|
Последний раз редактировалось Tpyna4ek, 24-01-2018 в 14:23. Отправлено: 12:52, 19-01-2018 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Переименование файла по маске. | Damien_here | Скриптовые языки администрирования Windows | 5 | 13-06-2017 12:51 | |
VBS/WSH/JS - Переименование файла по условиям | bombording | Скриптовые языки администрирования Windows | 1 | 24-03-2014 16:17 | |
VBS/WSH/JS - [решено] Перенос файла по содержанию | Vertolet | Скриптовые языки администрирования Windows | 9 | 02-10-2013 02:40 | |
CMD/BAT - [решено] Переименование файла по данным из самого файла | dark-------13 | Скриптовые языки администрирования Windows | 11 | 21-04-2011 18:08 | |
[решено] проверка XML-файла на соответствие XML schema в IE 6 и Firefox 2 | dimait | Вебмастеру | 4 | 23-08-2007 02:02 |
|