1 / 7 / 0
Регистрация: 19.09.2017
Сообщений: 81
|
|
Перенос содержимого папок на уровень вверх19.12.2022, 01:22. Показов 1491. Ответов 8
Метки нет Все метки)
(
Ребят, подскажите, пожалуйста, такой батник
Есть структура папок на два уровня - Группа / Подгруппа (+ общая папка-путь) В конечной папке Подгруппы лежат разные файлы (фото и текстовые) Нужно из конечных папок перенести (как бы консолидируя) все на уровень вверх в соответствующую им Группу верхнего уровня Чтобы из этого: _Общая папка __Группа1 ___Подгруппа1 ____файл1 ____файл2 ___Подгруппа2 ____файл3 ____файл4 __Группа2 ___Подгруппа1 ____файл1 ____файл2 ___Подгруппа2 ____файл3 ____файл4 Получилось это: _Общая папка __Группа1 ____файл1 ____файл2 ____файл3 ____файл4 __Группа2 ____файл1 ____файл2 ____файл3 ____файл4 Спасибо! Чтобы не было ошибок совпадающих имен, заголовки всех файлов будут изначально уникализированы!
0
|
19.12.2022, 01:22 | |
Ответы с готовыми решениями:
8
Архивация содержимого нескольких папок в отдельные архивы с названиями самих папок Перенос папок и файлов в них кроме 2х папок по новому пути |
![]() 252 / 185 / 47
Регистрация: 31.01.2021
Сообщений: 934
|
||||||
20.12.2022, 08:59 | ||||||
Anyaax,
Держинский:
1
|
![]() |
|||||||||||
20.12.2022, 09:44 | |||||||||||
![]() Решение
Если Вы уверены, что " заголовки всех файлов будут изначально уникализированы!", то
1
|
1 / 7 / 0
Регистрация: 19.09.2017
Сообщений: 81
|
|
21.12.2022, 00:50 [ТС] | |
Спасибо!
YUEN HOIFEF, ух, какой большой вышел код, это почему так? Angry Old Man, как понимаю, лишний элемент пути легко убирается - "\Box_In" а то меня несколько пугает его близкое нарицательное обозначение ) через BoxIn я просто, недавно, запускала один такой бат, который мне делали когда то, с дуру попробовав в нем "лишнее удалить" (с точки зрения банальной эрудиции)). так он мне снес за полминуты пол жесткого диска (удалением) ) хочу все пост сделать на эту тему, не ожидала, что можно так делов натворить..
0
|
![]() |
|
21.12.2022, 01:46 | |
![]() Решение
Anyaax, Пользователи делятся на 2 группы: кто потерял информацию, и кому это еще предстоит. Поэтому я жестко проверяю существование указанных папок в Pushd и в командах стремлюсь использовать полные пути, чего и Вам советую.
В переменной BoxIn желателен полный путь папки, лишний элемент пути, как Вы его обозвали, легко убирается - он показан как пример того, что "_Общая папка" тоже может быть вложенная.
1
|
1 / 7 / 0
Регистрация: 19.09.2017
Сообщений: 81
|
|
21.12.2022, 16:01 [ТС] | |
Angry Old Man,
Расскажу тогда тут о своем неудачном кейсе, чтобы на будущее понимать, чего я натворила там ) Давно просила, как то, мне сделать такой хитрый бат (тема) аналогичный, но немного расширенный для текущей задачи. И вот, теперь возникла задача только наполовину (второй части - пункт б). Не особенно мудрствуя лукаво, я в коде снесла первую часть сценария )) полагая, что она касается первой части задачи, ненужной сейчас (эка наивность ), сохранив огрызок второго, и запустила всю эту муть 0_0 вот так - 1@echo off /еще у меня тут и единичка случайно закралась ) set "d=C:\Papka" for /f "delims=" %%a in ('dir /ad/b "%~1"') do echo %%a|>nul find /i "%~2" && ( >nul move /y "%~1\%%a\*" "%~1" >nul 2>&1 rd /q /s "%~1\%%a" ) || ( >nul 2>&1 rd /q /s "%~1\%%a" ) exit /b После чего, у меня на глазах резко стали пропадать папки. И жесткий диск похудел за 20 сек на 250Гб. Тут я догадалась окошко прикрыть вручную. Отсюда вопросы (риторические, технические и тд). Да, я поняла уже, что исполнение сценария там идет более сложно, и его недопустимо так вероломно кромсать. Но что смутило меня. 1. Была указана папка исходного пути исполнения сценария (путь полный!). И я ею рисковать готова была. Каким образом, функция переметнулась на весь жесткий диск?? 2. Был ли риск, продолжать это бег по дискам соседним также, и удалить нахрен весь мой компьютер с его бесценной инфой? )(замечу, экстремально быстро, без переноса в корзину) Просто, так быть не должно. В моем понимании: а) если функция поломана, она должна вызвать ошибку б) если указан путь старта скрипта, то все неприятности должны быть ограничены этим путем Прошу пояснить, при желании, где я неправа, и, все таки, любопытства ради, что за огрызок скрипта я так породила, как монстра, и чем бы он дальше грозил, если его не остановить? ) А то у меня странное ощущение, так сказать, нехороший остался осадок, что в моих вещах грязно кто то покопался всерьез (. /И еще не пойму. Каким образом, батник мог удалить десятки тыс файлов за такое короткое время (масштаб трагедии уже определила, сравнив с бэкапом. средствами виндоус такое бы перемещалось в корзину 20+ минут). Добавлено через 7 минут И обывательский еще такой вопрос. Очень мне нравится работать с текстовым файлом. Очень нравится как можно многое удобно решить с файловой обработкой, не разыскивая десятки разных программ. Вопрос. Какой порог входа в программирование такого порядка? С чего начинать обучение (никак курсов подобных нигде не нахожу, но осознала что лучше переходить сразу к какому то PowerShell). Код выглядит магично. как понимаю, половина его - это регулярка, стало быть, начинать образование нужно с нее? В общем, каков мог быть кейс (алгоритм) обучения программированию на бат-файлах для бытовых целей (в основном - это файловая пакетная обработка) для неглупой девчонки, десять лет проработавшей аналитиком в отделе IT и со многими вещами на ты ) (Excel и тд). И за какой срок? Спасибо! )
0
|
6668 / 2829 / 1088
Регистрация: 06.06.2017
Сообщений: 9,600
|
|||||
21.12.2022, 17:42 | |||||
1
|
![]() |
|||
21.12.2022, 19:19 | |||
Для начала, у Вас на входе батника 2 аргумента. Они были, проверили? Они корректны - проверили? Вы написали set "d=C:\Papka" - но оно же никак не задействовано Допустим, запустили батник в папке диска C: Первого аргумента ИМХО не было. ("%~1"=="") Тогда конструкция rd /q /s "%~1\%%a" --> переходит на корень диска, /q /s - позволяет убить папки без вопросов, есть там содержимое, или нет. На другой диск, естественно, не пойдем, но текущий диск попортим. А RD работает очень быстро. Обратите внимание, как я реализовал перемещение вверх и удаление папок. Во первых, контроль пути (если бы он передавался в аргументе, я бы проверил наличие аргумента) rd у меня без ключей - если папка не пустая, удалена не будет. А с ключами - надо проверять всё-таки корректность пути и быть уверенным в их правильности. С CMD чем-то проще, а что-то сложнее. Если, допустим, в js, vbs при возникновении ошибки (без включения обработки ошибок) скрипт вылетит в ошибочное сообщение и исполнение остановится, то в CMD исполнение пойдет дальше. В моём понимании CMD нужно для рутинных процессов обслуживания системы - всякие пересылки файлов, архивация бэкапов. Тексты для меня скорее экзотика, чаще использую vbs, особенно потому, что VBA во многом с ним совпадает и можно писать скрипты VBS для обработки Excel-файлов. Но с UTF в vbs не так просто. PowerShell увы не пользуюсь, отошел от темы. Похоже, это самое перспективное.
1
|
21.12.2022, 19:19 | |
Помогаю со студенческими работами здесь
9
Тег 'a', подняться на один уровень вверх Как выйти на 1 уровень вверх в TreeNode Как перейти на уровень вверх по таблице? Следующий элемент после поднятия на уровень вверх Не получаеться разобраться с реализации кнопки поднятия на уровень вверх Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
|
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
|
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
|
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
|
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
|
Работа с ccache/sccache в рамках C++
Loafer 11.06.2025
Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
|
Настройка MTProxy
Loafer 11.06.2025
Дополнительная информация к инструкции по настройке MTProxy:
Перед сборкой проекта необходимо добавить флаг -fcommon в конец переменной CFLAGS в Makefile.
Через crontab -e добавить задачу:
0 3. . .
|
Изучаем Docker: что это, как использовать и как это работает
Mr. Docker 10.06.2025
Суть Docker проста - это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнер, если говорить образно, это запечатанная коробка, в которой находится ваше приложение вместе. . .
|
Тип Record в C#
stackOverflow 10.06.2025
Многие годы я разрабатывал приложения на C#, используя классы для всего подряд - и мне это казалось естественным. Но со временем, особенно в крупных проектах, я стал замечать, что простые классы. . .
|
Разработка плагина для Minecraft
Javaican 09.06.2025
За годы существования Minecraft сформировалась сложная экосистема серверов. Оригинальный (ванильный) сервер не поддерживает плагины, поэтому сообщество разработало множество альтернатив. CraftBukkit. . .
|