|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - удаление файлов по списку list.txt |
|
CMD/BAT - удаление файлов по списку list.txt
|
Новый участник Сообщения: 14 |
всем привет.
есть скрипт, в конце скрипта прописано удаление файлов которые указаны в списке list.txt скрипт пашет, но выдает кучу ошибок в конце в данный момент он выглядит так @echo off setlocal 1>nul chcp 1251 cd C:\vs (for %%i in (*.jpg) do @echo file '%%i') > list.txt ffmpeg -f concat -safe 0 -r 2 -i list.txt -threads 2 -vcodec libx264 -preset veryfast -qp 30 -tune grain -r 1 -framerate 1 30.avi call For /F "delims=" %%A In ('Dir "*.*" /A-D /B') Do (Echo %%~A)>>list.txt For /f "tokens=*" %%i in (list.txt) do attrib -a %%i attrib -a %0 del /aa /q /f *.* del list.txt pause и ошибок этих столько, сколько файлов я обрабатываю. а их несколько тысяч. в итоге скрипт отрабатывает за 1 минуту грубо говоря и 5 минут срет в лог ошибку формата параметра. чоделатьпомогите |
|
Отправлено: 20:30, 07-08-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Busla:
|
|
Отправлено: 11:29, 09-08-2018 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать есть родные для PoSh типы данных string и int
проверку директории через [System.IO.Directory]::Exists допустим, понять можно - штатные способы "проглотят", например, путь к реестру хотя в целом - это простой конвейер, если что-то не так с директорией, содержимым - сам командлет выдаст ошибку снабжённую всеми необходимыми атрибутами, на языке пользователя . "Плюнуть" на экран красный текст на иностранном языке - это для кого такое "удобство"? Оформляете в виде вызываемого скрипта, но он не формирует события ошибки. Для создания временных файлов есть стандартные механизмы и места, для удаления файлов - тоже. Зачем вместо штатных команд использовать обращения к библиотекам .NET? Синтетическое поле для каждого файла с номером - зачем?! - Они уже в пронумерованном массиве Вместо округления результата деления и отдельный итератор для групп используют целочисленное деления и остаток от целочисленного деления. Не надо явно указывать `r`n - это платформозависимое соглашение, а что PoSh, что ffmpeg работаею и на mac и на linux. Не надо в памяти формировать файлы - пишите сразу строки в файл Пути к ffmpeg самое место в параметре по умолчанию, а не в середине скрипта А вот результат работы ffmpeg как раз должен проверяться - сейчас если он не сможет создать видео (места на диске не хватило), скрипт всё равно бодро рапортует об успехе и удаляет исходные изображения. Наличие выходного файла тоже Вместо велосипеда с PromptForChoice можно просто вызвать Remove-Item с параметром -Confirm. Вы так уверены, что выдавать на экран простыню из 960 имён удалённых файлов - хорошая идея? Если они важны - не лучше ли тогда использовать Write-Output - чтобы можно было их по необходимости передать по конвейеру и т.п.? switch с единственным параметром тоже умиляет |
Отправлено: 13:20, 09-08-2018 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Busla, спасибо, ясно.
Цитата Busla:
Цитата Busla:
Цитата Busla:
Скрытый текст
![]() Красная портянка бывает и больше. Цитата Busla:
Цитата Busla:
Цитата Busla:
![]() Цитата Busla:
Цитата Busla:
Цитата Busla:
Цитата Busla:
Цитата Busla:
Цитата Busla:
Цитата Busla:
Цитата Busla:
Цитата Busla:
Скрытый текст
![]() Цитата Busla:
Цитата Busla:
Цитата Busla:
|
||||||||||||||||||
Отправлено: 21:17, 09-08-2018 | #13 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата Iska:
function findex ($arr, $val) { for ($i=0;$i -lt $arr.count;$i++) { if($arr[$i] -eq $val){$i} } } хотя, сейчас дошли руки проверить и это: работает... |
|
------- Последний раз редактировалось YuS_2, 10-08-2018 в 14:51. Отправлено: 13:42, 10-08-2018 | #14 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать YuS_2, боюсь, с группировкой отобранных файлов мне это не особо поможет.
|
Отправлено: 14:12, 10-08-2018 | #15 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Iska,
Да, в код не вчитывался, комментировал только то, что процитировано... В общем, суть задачи пока не разбирал, ничего добавить не могу... вечером, в спокойной обстановке гляну... |
------- Последний раз редактировалось YuS_2, 10-08-2018 в 15:01. Отправлено: 14:54, 10-08-2018 | #16 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Цитата Iska:
$aFiles = Get-ChildItem *.jpg -File $iListFileNumber = 0 $iLimit = 8 $i = 0 while ($i -lt $aFiles.Length) { $sListName = "$($iListFileNumber.ToString('000000')).lst" $iFileNumber = 0 while ($iFileNumber -lt $iLimit -and $i -lt $aFiles.Length) { $i = $iListFileNumber * $iLimit + $iFileNumber Add-Content -Path $sListName -Value $aFiles[$i].Name $iFileNumber+=1 } $iListFileNumber+=1 } |
|
Отправлено: 17:02, 10-08-2018 | #17 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Но, как минимум, тут: $aFiles = Get-ChildItem -Path "$sSourceFolder\*.*" -File -Include '*.jpg', '*.jpeg', '*.jpe' if($aFiles.Count -gt 0) { $i = 0 foreach($oFile in $aFiles) { Add-Member -InputObject $oFile -NotePropertyName Number -NotePropertyValue $i $i++ } $aFiles | Group-Object -Property { [Math]::Floor([System.Int32]$_.Number / $iLimit) }|... Эквивалент: |
|
------- Отправлено: 18:24, 10-08-2018 | #18 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать ух как тут жарко
![]() спасибо большое за ответы. power shell конечно монструозный что в .bat 10 строк, то в powershell целый том войны и мира один вопрос после формирования файла в list.txt есть куча строк с указанием файлов, из которых формируется видео. выходное имя видео это то, что я задам, можно даже указать время сегодняшнее. а нельзя ли, в качестве имени файла указать первую строчку и последнюю строчку list.txt? допустим в папке лежат фото собачей будкии, а на выходе получилось не N.avi, а Будка злой собаки 01-01-2018_00h01m01s Будка злой собаки 01-01-2018_23h59m01s.avi |
Отправлено: 18:38, 10-08-2018 | #19 |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата bidjo:
Например, прибавьте или отнимите, скажем, 7 дней к текущей дате в cmd, с учетом разного количества дней в месяцах, а также переход в новый/предыдущий месяц/год... Вот, как это делается на powershell: |
|
------- Отправлено: 19:15, 10-08-2018 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Выборка и txt по списку в txt файле | cyberp1983 | Скриптовые языки администрирования Windows | 5 | 24-05-2018 20:27 | |
CMD/BAT - Общий размер каталогов по списку в TXT | surgutfred | Скриптовые языки администрирования Windows | 8 | 11-12-2017 08:31 | |
CMD/BAT - Удаление файлов по списку | Freddy1984 | Скриптовые языки администрирования Windows | 11 | 04-05-2017 08:36 | |
CMD/BAT - [решено] Поиск файлов в поддиректориях по списку из txt и перемещение | Sub-Zero | Скриптовые языки администрирования Windows | 15 | 27-03-2017 12:58 | |
CMD/BAT - Удаление файлов и папок по списку с выводом результата в файл | Sub-Zero | Скриптовые языки администрирования Windows | 0 | 08-12-2015 23:12 |
|