Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Запаковать папку с именем дата время

Ответить
Настройки темы
CMD/BAT - [решено] Запаковать папку с именем дата время

Ветеран


Сообщения: 1274
Благодарности: 564


Конфигурация

Профиль | Отправить PM | Цитировать


Добрый день!
Столкнулся с проблемой, если создавать папку с именем дата время

@echo off
cd /d "%~dp2"
set fldr= %date% %time:~0,-3%
set fldrPath=%fldr::=. %
mkdir "%fldrPath%"
exit

то не могу запаковать ее в архив батником

@echo on
cd /d "%~dp2.."
set slesh=%~dp2
If "%slesh:~-1%"=="\" set slesh=%slesh:~0,-1%
"C:\Program Files\7-Zip\7z.exe" a "%slesh%" "%~dp2"
pause

папки с любыми именами и пробелами - запаковывает, а вот с точками не хочет, но менять точки на что-то другое - тире или ; не хочу, как выйти из ситуации.
%~dp2 - это у меня путь к текущей папке.

Отправлено: 12:06, 22-05-2015

 

Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Да ладно! Неужто такая непосильная наука?
Код: Выделить весь код
@echo off
  setlocal
    set "t=%time::=.%"
    set "f=%date% %t:~0,-3%"
    md "%f%"
    7za a -mx9 foo.zip "%f%"
  endlocal
exit /b
Если желаете дельный совет, не используйте cd /d - лучше возьмите на вооружение pushd и popd.

Отправлено: 12:30, 22-05-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


alpap, научитесь пользоваться тэгом [code].

Приводите полную информацию. Что есть там первый параметр, и почему он нигде не используется в коде? Если второй параметр — это путь к текущей папке, зачем там «cd /d "%~dp2"»?!
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:33, 22-05-2015 | #3


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


greg zakharov,
Не понял. Папка ...дата время уже создана (а может быть и с другим именем). Какая разница запихаю ее в переменную или нет, ее имя не может распознать архиватор, пишет не является она архивом. Пишу имя, например "Папка", спокойно делает мне рядом "Папка.7z".
Цитата Iska:
«cd /d "%~dp2"»?! »
Используется сторонняя программа для редактирования контекстного меню - удобная для меня и вот таким образом я могу перейти в текущую папку иначе в папку к батнику ...sys32.

Код: Выделить весь код
@echo on
cd /d "%~dp2.."
set slesh=%~dp2
If "%slesh:~-1%"=="\" set slesh=%slesh:~0,-1%
"C:\Program Files\7-Zip\7z.exe" a "%slesh%" "%~dp2"
pause
http://forum.oszone.net/attachment.p...1&d=1432293183

Последний раз редактировалось alpap, 22-05-2015 в 14:12.


Отправлено: 13:33, 22-05-2015 | #4


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Цитата alpap:
Какая разница запихаю ее в переменную или нет, ее имя не может распознать архиватор, пишет не является она архивом.
Претензии о почине рук обычно направляют к собственным родителям.

Отправлено: 14:22, 22-05-2015 | #5


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата alpap:
Используется сторонняя программа для редактирования контекстного меню - удобная для меня и вот таким образом я могу перейти в текущую папку иначе в папку к батнику ...sys32. »
Пусть будет так, но вопрос касается батника и Ваше объяснение про "удобство для Вас" ни как не помогает понять Ваш батник. Из него не видно, что именно содержится в переменной %~dp2 которая потом и преобразуется в то, что ...
Цитата alpap:
не может распознать архиватор »
К тому же у помогающих Вам нет Вашей "сторонней программы" и они не смогут воспроизвести Ваши условия тестирования.
Рекомендую отказаться от подобной манеры выкладывать проблемные батники. Попробуйте заменить %~dp2 на простую переменную и отлаживайте батник именно в таком виде. В таком же виде выкладывайте Ваш батник на форум, если возникли вопросы. После отладки батника Вы сможете заменить переменную на Вашу %~dp2 и получить рабочую конструкцию.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:32, 22-05-2015 | #6


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


gora,
Ну хорошо. Кое что наладил, но не получается переименовать файл
PHP код: Выделить весь код

@echo on
cd 
/"C:\Users\Papenko\Desktop"
set "slesh=C:\Users\Papenko\Desktop\ 22.05.2015   14. 16. 51"
set "slesh=%slesh:~0,-1%"
set "slesh=%slesh:.=-%"
"C:\Program Files\7-Zip\7z.exe" 
"%slesh%" "C:\Users\Papenko\Desktop\ 22.05.2015   14. 16. 51"
set "sleshn=%slesh:-=.%"
ren "%slesh%" "%sleshn%"
pause 

Хочу назад вернуть точки - где ошибка?

Отправлено: 16:33, 22-05-2015 | #7


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Извиняюсь, нашел, во второй переменной путь указан, а надо просто имя. Получилось так:

Код: Выделить весь код
@echo off
cd /d "C:\Users\Papenko\Desktop"
set "slesh=C:\Users\Papenko\Desktop\ 22.05.2015   14. 16. 51"
set "slesh=%slesh:~0,-1%"
set "slesh=%slesh:.=-%"
"C:\Program Files\7-Zip\7z.exe" a "%slesh%" "C:\Users\Papenko\Desktop\ 22.05.2015   14. 16. 51"
set "new=%slesh%.7z"
for %%i in ("%new%") do set "new1=%%~nxi"
set "new1=%new1:-=.%"
ren "%new%" "%new1%"
exit

Отправлено: 17:55, 22-05-2015 | #8


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата alpap:
где ошибка? »
Она не одна:
1
Код: Выделить весь код
set "slesh=C:\Users\Papenko\Desktop\ 22.05.2015   14. 16. 51"
Первый символ в имени папки не может быть пробел. Мне не удалось создать такую папку ни в Проводнике, ни в Total Commander.
2
Код: Выделить весь код
set "slesh=%slesh:~0,-1%"
Непонятно зачем отрезать последний символ из имени папки (там не слеш). Это ни чего не дает кроме путаницы.
3
Код: Выделить весь код
"C:\Program Files\7-Zip\7z.exe" a "%slesh%" "C:\Users\Papenko\Desktop\ 22.05.2015   14. 16. 51"
Архиватор не понимает, где здесь имя архива, а где имя упаковываемого объекта. Нужно указать расширение у архива и тогда он все поймет.
4
Код: Выделить весь код
ren "%slesh%" "%sleshn%"
Вы же, как я понял, хотите переименовать архив, а указываете путь с именем папки (нет расширения и это уже не архив, а папка). Нужно указать расширение переименовываемого файла.
В команде ren вторым параметром идет новое имя файла без пути!

Ну и в заключении Ваш батник без лишних "выкрутасов" с переименованиями.
Код: Выделить весь код
@echo on
cd /d "C:\Users\Papenko\Desktop"
set "slesh=C:\Users\Papenko\Desktop\22.05.2015   14. 16. 51"
rem set "slesh=%slesh:~0,-1%"
rem set "slesh=%slesh:.=-%"
"C:\Program Files\7-Zip\7z.exe" a "%slesh%.7z" "%slesh%"
rem set "sleshn=%slesh:-=.%"
rem ren "%slesh%.7z" "%sleshn%"
pause
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:00, 22-05-2015 | #9


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


gora,
Цитата gora:
ren "%slesh%.7z" "%sleshn%" »
- здесь тоже не идет из-за наличия пути в %sleshn%.
http://forum.oszone.net/attachment.p...1&d=1432312045
А архиватор расширение 7z сам добавляет по-умолчанию, главное чтобы обр слеша не было.

Последний раз редактировалось alpap, 28-07-2016 в 00:25.


Отправлено: 19:28, 22-05-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Запаковать папку с именем дата время

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Распаковка ВСЕХ архивов в папку с тем же именем death7lord Скриптовые языки администрирования Windows 9 11-01-2020 15:21
CMD/BAT - копирование папки с целевым именем "название+дата создания" Zlodeyz Скриптовые языки администрирования Windows 5 08-02-2011 02:52
Дата\время (вопрос) Sunsei Непонятные проблемы с Железом 5 03-04-2008 00:52
дата и время в С++ ptt Программирование и базы данных 5 02-09-2004 09:45
время и дата hameg Программное обеспечение Linux и FreeBSD 16 29-09-2003 21:02




 
Переход