Есть структура папок типа "название проекта - out - имя_выходного_файла.jpg
И нужно сделать так, чтобы все выходные jpg-файлы оказались не в подпапке out, а в уровнем выше, в папке самого проекта
Как можно это сделать автоматически в семерке?
Что вообще можно почитать, какую литературу, чтобы облегчить себе жизнь при возникновении других подобных потребностей?
З.Ы. Без написания специального батника в голову пока приходит следующее решение:
- перебрать поиском все подпапки out, заархивировать каждую раром (с сохранением out.rаr-файла на том же уровне, что и сама подпапка out), а потом разархивировать все без сохранения относительных путей.
З.З.Ы. Кстати, раз уж здесь собрались знатоки файловых менеджеров, есть еще один вопрос - может ли какой-либо из них искать файлы по дате? С такого-то по такое-то число? не сортировать уже найденные данные, а с самого начала как-то ограничить поиск временным интервалом, чтобы не перебирать излишнее количество данных?
АПД. Все вопросы разрешены, спасибо.
И нужно сделать так, чтобы все выходные jpg-файлы оказались не в подпапке out, а в уровнем выше, в папке самого проекта
Как можно это сделать автоматически в семерке?
Что вообще можно почитать, какую литературу, чтобы облегчить себе жизнь при возникновении других подобных потребностей?
З.Ы. Без написания специального батника в голову пока приходит следующее решение:
- перебрать поиском все подпапки out, заархивировать каждую раром (с сохранением out.rаr-файла на том же уровне, что и сама подпапка out), а потом разархивировать все без сохранения относительных путей.
З.З.Ы. Кстати, раз уж здесь собрались знатоки файловых менеджеров, есть еще один вопрос - может ли какой-либо из них искать файлы по дате? С такого-то по такое-то число? не сортировать уже найденные данные, а с самого начала как-то ограничить поиск временным интервалом, чтобы не перебирать излишнее количество данных?
АПД. Все вопросы разрешены, спасибо.
no subject
Date: 2014-05-22 10:03 am (UTC)no subject
Date: 2014-05-22 10:40 am (UTC)Может ли она переместить множество файлов во множестве каталогов (по маске я их могу и виндовом проводнике найти) автоматически на уровень выше, а не в одну какую-то папку?
no subject
Date: 2014-05-22 10:06 am (UTC)no subject
Date: 2014-05-22 10:33 am (UTC)no subject
Date: 2014-05-22 10:54 am (UTC)no subject
Date: 2014-05-22 11:05 am (UTC)В каждой - папка out, и далее по тексту. Задача - обработать все 100500 папок верхнего уровня в один заход, а не телепаться с каждой по отдельности."
no subject
Date: 2014-05-22 11:08 am (UTC)no subject
Date: 2014-05-22 10:07 am (UTC)"move out\*.jpg ."
запущенной в папке "название проекта".
В принципе, можно и перебор дерева с папками проектов реализовать попробовать, т.е. батничек написать...
no subject
Date: 2014-05-22 10:34 am (UTC)Именно про батник я и хотел понять, какой там нужен лексикон, какие команды и т.п.
no subject
Date: 2014-05-22 10:41 am (UTC)Подробностей уже не помню, шашек в руки не брал давно. Гуглите про for конкретно и про командную строку Windows вообще.
Очевидно, что вам придется как-то ограничивать поиск. Проще всего, поместив все папки "название проекта" в единственную папку и запуская поиск, начиная с нее. Никаких сложностей возникнуть не должно, если структура всех папок одинакова (везде есть каталог out и уровни вложенности тоже одинаковые).
no subject
Date: 2014-05-22 10:43 am (UTC)Спасибо, буду искать в данном направлении)
no subject
Date: 2014-05-22 11:46 am (UTC)for /R %A in (*.jpg) do move %A ..
no subject
Date: 2014-05-22 10:07 am (UTC)заходите в консоли в каталог out, вводите команду move *.jpg .., жмете Enter.
no subject
Date: 2014-05-22 10:35 am (UTC)Просто в каждой папке файл я и так могу скопировать на уровень выше.
no subject
Date: 2014-05-22 10:46 am (UTC)no subject
Date: 2014-05-22 10:50 am (UTC)В каждой - папка out, и далее по тексту. Задача - обработать все 100500 папок верхнего уровня в один заход, а не телепаться с каждой по отдельности.
no subject
Date: 2014-05-22 10:52 am (UTC)Тогда надо просто забить на это дело! :)
no subject
Date: 2014-05-22 11:00 am (UTC)no subject
Date: 2014-05-22 11:14 am (UTC)Нужно оценить время, сколько Вы потратите на поиск средств и овладевание ими. Кроме того, учтите риск ошибок (лучше сбекапьте всю изначальную конструкцию перед началом экспериментов), когда Ваш скрипт что-то сделает не так и файлы просто перепутаются. И тогда может оказаться, что цель ложная :)
no subject
Date: 2014-05-22 01:11 pm (UTC)Бэкапы - да. Но сейчас это пока я все попробую на тестовых папках)
no subject
Date: 2014-05-22 10:57 am (UTC)Во множестве папок лежат jpg-файлы. Найти их поиском и выделить я могу хоть в винде, хоть где. Речь о том, чтобы скопировать их все не в одну папку, а в папки, родительские по отношению к тем, где эти файлы лежали раньше.
no subject
Date: 2014-05-22 11:11 am (UTC)В скрипте, как уже сказали, можно использовать команду FOR которая позволяет выполнить другую команду по отношению ко всем файлам или подпапкам.
Другой вариант -- составить список всех папок, которые нужно обработать, а потом этот список переделать в скрипт.
no subject
Date: 2014-05-22 11:19 am (UTC)Примерно так?
допустим, у вас проект находится в папке D:\Project.
D:.
├───New folder
│ ├───New folder - Copy (2)
│ │ └───out
│ ├───New folder - Copy (3)
│ │ ├───New folder - Copy (2) - Copy
│ │ │ └───out
│ │ ├───out
│ │ └───out - Copy
│ ├───out
│ └───out - Copy
├───New folder - Copy
│ └───out
├───New folder - Copy - Copy
│ └───out
├───New folder - Copy - Copy (2)
│ └───out
├───New folder - Copy - Copy - Copy
│ └───out
├───New folder - Copy - Copy - Copy (2)
│ └───out
└───New folder - Copy - Copy - Copy - Copy
└───out
Тогда вам поможет более сложная команда с циклом:
for /R D:\Project %i IN (out\*.jpg) DO move "%i" "%~pi.." (со всеми точками и кавычками)
Эта команда пройдется по всем папкам и подпапкам, и если в подпапках, имеющих имя "out", встретит файл *.jpg, то переместит его на уровень выше.
Оно?
no subject
Date: 2014-05-22 01:07 pm (UTC)Спасибо)) Обязательно попробую))
Это нужно запихнуть в батник и потом исполнить ведь?
no subject
Date: 2014-05-22 02:05 pm (UTC)Пуск - выполнить - cmd - вставить - enter.
если захотите сохранить батник, то все символы % надо удвоить (%%).
no subject
Date: 2014-05-22 02:30 pm (UTC)no subject
Date: 2014-05-22 03:38 pm (UTC)no subject
Date: 2014-05-22 10:18 am (UTC)no subject
Date: 2014-05-22 10:45 am (UTC)Можно просто взять все файлы внутри "out" и перенести на один уровень вверх. А потом стереть "out", которая теперь пустая.
Или переименуйте "название проекта" в "название проекта стереть", потом переименуйте "out" в "название проекта". Потом перенесите "название проекта" на один уровень вверх, а затем сотрите "название проекта стереть", которая теперь пустая.
no subject
Date: 2014-05-22 11:07 am (UTC)запускать из каталога выше проектов
переносит все *.jpg файлы на этаж выше
PS. сорри, сверху была ошибка, перепроверил, теперь правильно
no subject
Date: 2014-05-22 11:20 am (UTC)no subject
Date: 2014-05-22 11:22 am (UTC)вот так можно:
если этот код в батник записывать, то проценты при i нужно удвоить :)
no subject
Date: 2014-05-22 11:39 am (UTC)Только переменные надо брать в кавычки на всякий случай - если попадутся папки с пробелами в именах, выдаст ошибку. И, кстати, %~pi уже содержит бэкслеш в конце, так что можно сразу ставить две точки.
no subject
Date: 2014-05-22 11:41 am (UTC)no subject
Date: 2014-05-22 11:42 am (UTC)no subject
Date: 2017-03-30 01:32 am (UTC)for /r %%i in (out\*) do move %%i %%~pi\..\
Нужно чтобы из папки out (которая лежит там же где и батник) все ФАЙЛЫ и ПАПКИ (включая файлы в подпапках), перенесло на уровень выше, т.е. туда, где лежит этот move.bat, сохраняя структуру каталогов (с заменой файлов).
Этот батник делает что-то немного не то, не получается добиться цели. Помогите пожалуйста, второй день не сплю.
no subject
Date: 2017-03-30 01:57 am (UTC)@echo off
set "source=out"
set "destination=."
for /f "delims=" %%i in ('dir /b/s "%source%"') do (
set var=%%i
for /f "delims=" %%j in ('call echo "%%var:*%source%\=%%"') do (
if exist "%%i" (
if not exist "%destination%\%%~j" (
move /y "%%i" "%destination%\%%~j">nul
)
)
)
)
for /f "delims=" %%i in ('dir /ad/b "%source%"') do (
rd /s/q "%source%\%%i"
)
exit /b
Только папку out не удаляет. Как сделать?
rd /s/q "%source%"
rmdir out /S /Q
Не удаляет саму папку out, только то что внутри.
no subject
Date: 2017-03-30 02:07 am (UTC)no subject
Date: 2017-03-30 08:05 am (UTC)no subject
Date: 2014-05-22 01:09 pm (UTC)В этом коде тоже нужно удвоить проценты при i при запихивании в батник?
no subject
Date: 2014-05-22 01:58 pm (UTC)а код всюду один, у esset_bonum он более правильный
no subject
Date: 2014-05-22 02:33 pm (UTC)no subject
Date: 2014-05-22 11:52 am (UTC)no subject
Date: 2014-05-22 01:12 pm (UTC)