|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] ошибка слишком длинный путь или имя файла |
|
|
PowerShell - [решено] ошибка слишком длинный путь или имя файла
|
Пользователь Сообщения: 102 |
Дано:
поиск файлов по маске и во вложенных папках $PathIn = "\\serv\Otdely\ZUR" $MaskDel = "*.bak" $FilesDel = Get-ChildItem $PathIn\* -recurse -Include $MaskDel if ($FilesDel -ne $null) { Write-Host "нашлось"`t ($FilesDel.count) Write-Host "нашлось"`t ($FilesDel.Length / 1Mb) "Мб" Write-Host "нашлось"`t ($FilesDel.Length / 1Gb) "Гб" ForEach ($FileDelCurrent in $FilesDel) { $FileDelCurrent_count++ Write-Host $FileDelCurrent_count ($FileDelCurrent.Length / 1Mb) `t $FileDelCurrent.name } } read-host "закончили упражнения" как обойти ошибку |
|
Отправлено: 13:44, 03-04-2015 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Как вариант использовать robocopy , функция - http://www.powershellmagazine.com/20...ps-and-tricks/
|
Отправлено: 13:48, 03-04-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать при этом bat вариант отрабатывает без ошибок:
@title [ERASE] @echo off Color 0e rem ******************************************************************************** rem * скрипт удаления файлов по маске. * rem ******************************************************************************** rem set PUT=\\serv\Otdely\ZUR\ПРОЕКТЫ\ rem откуда удаляем: set PUT=\\serv\Otdely\ZUR\ЏђЋ…Љ’› set DEL_LOG=\\serv\Otdely\ZUR\ЏђЋ…Љ’›\г¤*«Ґ*ЁҐ bak.txt set end_error=0 echo ==[%date:~6,4%-%date:~3,2%-%date:~0,2%]==[%time%]==[%username%]=======[Начнем]====================== >>"%DEL_LOG%" rem подключим сетевой диск: NET USE P: "%PUT%" if %errorlevel% NEQ 0 ( set end_error=1 set text_EE=не удалось подключить сетевой диск goto :end ) echo Создаем сетевой диск: OK >>"%DEL_LOG%" chcp 1251>nul rem приступим к удалению: Del /F /S /Q P:\*.bak >>"%DEL_LOG%" chcp 866>nul :end NET USE P: /delete /y if %end_error% EQU 0 echo ==[%date:~6,4%-%date:~3,2%-%date:~0,2%]==[%time%]==[%username%]=======[Выполнено]=================== >>"%DEL_LOG%" if %end_error% EQU 1 echo ==[%date:~6,4%-%date:~3,2%-%date:~0,2%]==[%time%]==[%username%]=======[ОШИБКА: %text_EE%]== >>"%DEL_LOG%" echo. >>"%DEL_LOG%" ping -n 5 localhost>nul exit pause |
Отправлено: 13:57, 03-04-2015 | #3 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Отрабатывает по причине использования более меньшего пути. Подключайте диск P и используйте в PowerShell.
|
Отправлено: 13:59, 03-04-2015 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата firstarey:
Цитата Kazun:
|
|||
Отправлено: 14:01, 03-04-2015 | #5 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:05, 03-04-2015 | #6 |
Ветеран Сообщения: 1758
|
Цитата firstarey:
Подключите диск и путь будет короче: |
|
Отправлено: 14:39, 03-04-2015 | #7 |
Ветеран Сообщения: 547
|
Профиль | Сайт | Отправить PM | Цитировать robocopy...
да уж, как забудешь использовать ключ /ХJ так потом не оберешься проблем с копированием appdata ) |
------- Отправлено: 14:42, 03-04-2015 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата firstarey:
В любом случае разбираться с длинными путями лучше «ручками». Цитата firstarey:
|
||
Отправлено: 16:03, 03-04-2015 | #9 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать в общем вышел из ситуации, как и ранее в bat файле, через подключение сетевого диска.
если кому интересно - пользуйтесь: код
$PathIn = "\\serv\Otdely\ZUR\ПРОЕКТЫ" $MaskDel = "*.bak" ######################################### Write-Host "работаем.." $MinWork=((Measure-Command { NET USE P: "$PathIn" $FilesDel = Get-ChildItem P:\* -recurse -Include $MaskDel if ($FilesDel -ne $null) { Clear-Host ForEach ($FileDelCurrent in $FilesDel) { $FileDelCurrent_count++ $Files_Length = $Files_Length + $($FileDelCurrent.Length / 1Mb) [string]$DocNum = $FileDelCurrent $DocNum = $DocNum.split("\")[2] $DocNum = $DocNum.split("_")[0] Switch (($(($FileDelCurrent.Length / 1Mb).tostring("F00"))).Length) { 1 {$FileDelCurrent_Length = "00$(($FileDelCurrent.Length / 1Mb).tostring("F00"))"} 2 {$FileDelCurrent_Length = "0$(($FileDelCurrent.Length / 1Mb).tostring("F00"))"} 3 {$FileDelCurrent_Length = "$(($FileDelCurrent.Length / 1Mb).tostring("F00"))"} } Write-Host $FileDelCurrent_count`t$FileDelCurrent_Length "Мб"`t$DocNum`t$($FileDelCurrent.name) } } NET USE P: /delete /y }).TotalMinutes.tostring("F00")) Write-Host "-------------------------------------------------------------------------------" Write-Host "работал "$MinWork" мин, нашлось "($FilesDel.count)" файлов, размером "($Files_Length).tostring("F00")" Мб" Write-Host "-------------------------------------------------------------------------------" $WinTitle=(get-host).UI.RawUI $WinTitle.WindowTitle="готово!" read-host "закончили упражнения" Цитата Foreigner:
я конечно понимаю что это не сложно найти, но тому кто не знает значительно проще будет увидеть все в одном сообщении не ползая в справку. |
|
Отправлено: 09:34, 06-04-2015 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - [решено] Инвентаризация компьютеров (По данным из AD, из файла, или просто указав имя компа) | dark-------13 | Скриптовые языки администрирования Windows | 1 | 28-04-2015 15:34 | |
Разное - Слишком длинный целевой путь | menro | Microsoft Windows 7 | 18 | 23-02-2013 14:48 | |
Разное - Путь содержит слишком много уровней вложенности | withsouth | Microsoft Windows 2000/XP | 13 | 16-01-2012 12:53 | |
Разное - [решено] Слишком длинный целевой путь. Как отключить? | Limpin | Microsoft Windows Vista | 3 | 27-05-2009 17:21 | |
При доступе по сети возникает ошибка - Неверное сетевое имя или пароль | Infinity7 | Microsoft Windows NT/2000/2003 | 8 | 29-09-2005 12:10 |
|