![]() |
Дубликат папки/файла
Как правильно создать батник который создает папку или файл, проверяет есть ли она/он перед этим и если есть добавляет к имени 1, есть 1, то 2 и т.д.
точно также как в контекстном меню создать ПКМ на папке/файле. "Новая папка", при наличии - "Новая папка1"... Как-то в for надо указать бесконечность ...(1,1,?) а может вообще по-другому. Да и подскажите как свое сообщение перенести из темы в тему. Спасибо заранее! |
На WSH я, помнится, делал такое здесь по аналогичной просьбе. Только не:
Цитата:
Цитата:
|
Iska,
Меня устроит на vbs (а что такое WSH, есть в windows 7 x86?), если где-то завалялось и можно найти то буду премного благодарен. P.S. А эта форма или вариант - вполне устраивает. |
Я тут подумал... Впринципе я сделал батник для создания папки с именем дата,время, тогда будет создаваться новая папка всякий раз,
что устраивает отностельно (хотелось бы все же свое имя вместо новая папка), а как эту созданную папку запустить открытой. Через start я думаю получится, но что запускать если папка еще не создана? |
Покажите код.
|
Я так понял для создания папки дата, время
set sFolderName=%date% %time:~0,-3% md "%sFolderName::=-%" |
Код:
@echo off |
Пропускает и ставит тире во времени - уже опробовано.
|
фиксанул
Господи. Дико извиняюсь: Код:
@echo off |
Цитата:
Цитата:
|
iccup.platoon@vk,
Да так работает - спасибо! Я использую стороннюю программу для редактирования контекстного меню поэтому у меня код следующий @echo off cd /d "%~dp2" set fldr= %date% %time:~0,-3% set fldrPath=%fldr::=. % mkdir "%fldrPath%" start "" "%fldrPath%" exit И немного изменил формат представления времени - так визуально лучше смотрится, хотя на любителя. Но тему не закрываю, хочется все же того, что написал в шапке. |
Покажите на примере список предполагаемых названий папок.
|
iccup.platoon@vk,
Да, в принципе, нет разницы (особой) как они называются - хотя, в идеале надо чтобы я сам мог задавать им название. Главное чтобы содав папку шла проверка что папка с таким именем существует и следующая папка создавалась с тем же именем, но с цифрой 1(2), 2(3),... т.е. по шаблону <имя папки> <номер>, <имя папки> <номер+1>, ... . |
Код:
@echo off |
iccup.platoon@vk,
Да все банально должно происходить, нет такой (первой ("нулевой")) папки - создаем первую ("нулевую") и радуемся, хотим coздать еще одну - создается ее типа копия (в смысле имени) с уже номером+1 и т.д. Создается по команде только одна папка и при этом никто и нигде не должен матюкаться, что папка с таким именем уже существует. Я изначально хотел сделать <имя папки> <дата,время>, ну не хотел, а как вариант - но, во-первых длинное название получается часто, этого даты с именем я уже не вижу папки на одно лицо, во-вторых у меня и так достаточно будет дат и времен - ни к чему, номер - идеал. Я не буду (не планирую) вводить номер(а) папки, только задам ей свое имя. |
я однозначно повержен =)
|
Georgio,
Вот это дааа! Нет, я бы такое и близко не сделал - превзошло все ожидания. Спасибо огромное, все работает супер - проверил. Немного лишнее для меня - опрос имени папки, но это даже интереснее, тем более лучше больше чем меньше да и есть чему поучиться еще где-нибудь применю. |
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 ) |
Georgio,
Про параметр "%1" не понял, а cd /d "%~dp2" я использую потому что у меня стоит сторонняя программа для редактирования контекстного меню и таким образом перехожу в нужную мне для работы директорию. А за кавычки - спасибо. |
Время: 06:13. |
Время: 06:13.
© OSzone.net 2001-