|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Дубликат папки/файла |
|
CMD/BAT - [решено] Дубликат папки/файла
|
Ветеран Сообщения: 1274 |
Как правильно создать батник который создает папку или файл, проверяет есть ли она/он перед этим и если есть добавляет к имени 1, есть 1, то 2 и т.д.
точно также как в контекстном меню создать ПКМ на папке/файле. "Новая папка", при наличии - "Новая папка1"... Как-то в for надо указать бесконечность ...(1,1,?) а может вообще по-другому. Да и подскажите как свое сообщение перенести из темы в тему. Спасибо заранее! |
|
Отправлено: 16:32, 12-05-2015 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать iccup.platoon@vk,
Да так работает - спасибо! Я использую стороннюю программу для редактирования контекстного меню поэтому у меня код следующий @echo off cd /d "%~dp2" set fldr= %date% %time:~0,-3% set fldrPath=%fldr::=. % mkdir "%fldrPath%" start "" "%fldrPath%" exit И немного изменил формат представления времени - так визуально лучше смотрится, хотя на любителя. Но тему не закрываю, хочется все же того, что написал в шапке. |
Отправлено: 01:08, 13-05-2015 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Пользователь Сообщения: 82
|
Профиль | Сайт | Отправить PM | Цитировать Покажите на примере список предполагаемых названий папок.
|
------- Отправлено: 03:12, 13-05-2015 | #12 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать iccup.platoon@vk,
Да, в принципе, нет разницы (особой) как они называются - хотя, в идеале надо чтобы я сам мог задавать им название. Главное чтобы содав папку шла проверка что папка с таким именем существует и следующая папка создавалась с тем же именем, но с цифрой 1(2), 2(3),... т.е. по шаблону <имя папки> <номер>, <имя папки> <номер+1>, ... . |
Отправлено: 12:27, 13-05-2015 | #13 |
![]() Пользователь Сообщения: 82
|
Профиль | Сайт | Отправить PM | Цитировать @echo off mkdir %cd%\dirtest cls set dirname=Papka echo Enter the number of folders to create set /p dirnumber= for /L %%i in (1,1,%dirnumber%) do ( mkdir "%cd%\dirtest\%dirname%%%i" ) ![]() |
------- Отправлено: 12:59, 13-05-2015 | #14 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать iccup.platoon@vk,
Да все банально должно происходить, нет такой (первой ("нулевой")) папки - создаем первую ("нулевую") и радуемся, хотим coздать еще одну - создается ее типа копия (в смысле имени) с уже номером+1 и т.д. Создается по команде только одна папка и при этом никто и нигде не должен матюкаться, что папка с таким именем уже существует. Я изначально хотел сделать <имя папки> <дата,время>, ну не хотел, а как вариант - но, во-первых длинное название получается часто, этого даты с именем я уже не вижу папки на одно лицо, во-вторых у меня и так достаточно будет дат и времен - ни к чему, номер - идеал. Я не буду (не планирую) вводить номер(а) папки, только задам ей свое имя. |
Последний раз редактировалось alpap, 13-05-2015 в 13:45. Отправлено: 13:36, 13-05-2015 | #15 |
![]() Пользователь Сообщения: 82
|
Профиль | Сайт | Отправить PM | Цитировать я однозначно повержен
![]() |
------- Отправлено: 16:16, 13-05-2015 | #16 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Georgio,
Вот это дааа! Нет, я бы такое и близко не сделал - превзошло все ожидания. Спасибо огромное, все работает супер - проверил. Немного лишнее для меня - опрос имени папки, но это даже интереснее, тем более лучше больше чем меньше да и есть чему поучиться еще где-нибудь применю. |
Отправлено: 00:47, 14-05-2015 | #17 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Georgio,
Да мне Ваш вариант даже больше понравился, окно только меньше сделал - для красоты, надеюсь правильно (работает). mode con cols=30 lines=1 @echo off cd /d "%~dp2" set/p name=Введите имя папки: echo %name% if defined name ( for /f "delims=" %%i in (' 2^>nul dir/ad/b "%name%*"^| findstr/irc:"^%name%[1-9][0-9]*$" ') do ( set x=%%i for /f %%j in (' cmd/v/c echo "!x:*%name%=!" ') do ( for /f %%k in (' set/a max ') do ( if %%~j gtr %%k ( set/a max=%%~j+1 ) ) ) ) ) else ( exit/b 1 ) if defined max ( for /l %%i in (1 1 %max%) do ( for /f %%j in (' set/a %%i+1 ') do ( 2>nul md "%name%%%j"&& ( exit/b 0 ) ) ) ) else ( 2>nul md "%name%"|| ( md "%name%1" ) exit/b 0 ) |
Отправлено: 18:24, 14-05-2015 | #18 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Georgio,
Про параметр "%1" не понял, а cd /d "%~dp2" я использую потому что у меня стоит сторонняя программа для редактирования контекстного меню и таким образом перехожу в нужную мне для работы директорию. А за кавычки - спасибо. |
Отправлено: 19:12, 14-05-2015 | #19 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - свойства папки/файла | berloga41 | Microsoft Windows 2000/XP | 2 | 15-10-2013 00:49 | |
CMD/BAT - копирование папки или файла | vxor | Скриптовые языки администрирования Windows | 8 | 22-06-2012 23:51 | |
Разное - [решено] Появился дубликат учетной записи, с добавочным именем компьютера | RUVATA | Microsoft Windows 2000/XP | 3 | 15-02-2011 12:25 | |
Разное - Ошибка при переименовании папки, файла | vit063 | Microsoft Windows Vista | 6 | 22-07-2010 10:33 | |
Вес файла и папки | Nealles | Программирование и базы данных | 1 | 25-02-2004 20:31 |
|