CMD/BAT - [решено] Запаковать папку с именем дата время
-
alpap
CMD/BAT - [решено] Запаковать папку с именем дата время
Добрый день!
Столкнулся с проблемой, если создавать папку с именем дата время
@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 - это у меня путь к текущей папке.
Столкнулся с проблемой, если создавать папку с именем дата время
@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 - это у меня путь к текущей папке.
-
greg zakharov
Re: CMD/BAT - [решено] Запаковать папку с именем дата время
Да ладно! Неужто такая непосильная наука?
Код:
Если желаете дельный совет, не используйте cd /d - лучше возьмите на вооружение pushd и popd.
Код:
Код: Выделить всё
@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.
-
Iska
Re: CMD/BAT - [решено] Запаковать папку с именем дата время
alpap, научитесь пользоваться тэгом
Код: Выделить всё
[/url].
Приводите полную информацию. Что есть там первый параметр, и почему он нигде не используется в коде? Если второй параметр — это путь к текущей папке, зачем там «cd /d "%~dp2"»?!-
alpap
Re: CMD/BAT - [решено] Запаковать папку с именем дата время
greg zakharov,
Не понял. Папка ...дата время уже создана (а может быть и с другим именем). Какая разница запихаю ее в переменную или нет, ее имя не может распознать архиватор, пишет не является она архивом. Пишу имя, например "Папка", спокойно делает мне рядом "Папка.7z".
Цитата Iska:
«cd /d "%~dp2"»?!
Используется сторонняя программа для редактирования контекстного меню - удобная для меня и вот таким образом я могу перейти в текущую папку иначе в папку к батнику ...sys32.
Код:
Не понял. Папка ...дата время уже создана (а может быть и с другим именем). Какая разница запихаю ее в переменную или нет, ее имя не может распознать архиватор, пишет не является она архивом. Пишу имя, например "Папка", спокойно делает мне рядом "Папка.7z".
Цитата Iska:
«cd /d "%~dp2"»?!
CMD/BAT - [решено] Запаковать папку с именем дата время
Используется сторонняя программа для редактирования контекстного меню - удобная для меня и вот таким образом я могу перейти в текущую папку иначе в папку к батнику ...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"
pausehttp://forum.oszone.net/attachment.p...1&d=1432293183
-
greg zakharov
Re: CMD/BAT - [решено] Запаковать папку с именем дата время
Цитата alpap:
Какая разница запихаю ее в переменную или нет, ее имя не может распознать архиватор, пишет не является она архивом.
Претензии о почине рук обычно направляют к собственным родителям.
Какая разница запихаю ее в переменную или нет, ее имя не может распознать архиватор, пишет не является она архивом.
Претензии о почине рук обычно направляют к собственным родителям.
-
gora
Re: CMD/BAT - [решено] Запаковать папку с именем дата время
Цитата alpap:
Используется сторонняя программа для редактирования контекстного меню - удобная для меня и вот таким образом я могу перейти в текущую папку иначе в папку к батнику ...sys32.
Пусть будет так, но вопрос касается батника и Ваше объяснение про "удобство для Вас" ни как не помогает понять Ваш батник. Из него не видно, что именно содержится в переменной %~dp2 которая потом и преобразуется в то, что ...
Цитата alpap:
не может распознать архиватор
К тому же у помогающих Вам нет Вашей "сторонней программы" и они не смогут воспроизвести Ваши условия тестирования.
Рекомендую отказаться от подобной манеры выкладывать проблемные батники. Попробуйте заменить %~dp2 на простую переменную и отлаживайте батник именно в таком виде. В таком же виде выкладывайте Ваш батник на форум, если возникли вопросы. После отладки батника Вы сможете заменить переменную на Вашу %~dp2 и получить рабочую конструкцию.
Используется сторонняя программа для редактирования контекстного меню - удобная для меня и вот таким образом я могу перейти в текущую папку иначе в папку к батнику ...sys32.
CMD/BAT - [решено] Запаковать папку с именем дата время
Пусть будет так, но вопрос касается батника и Ваше объяснение про "удобство для Вас" ни как не помогает понять Ваш батник. Из него не видно, что именно содержится в переменной %~dp2 которая потом и преобразуется в то, что ...
Цитата alpap:
не может распознать архиватор
CMD/BAT - [решено] Запаковать папку с именем дата время
К тому же у помогающих Вам нет Вашей "сторонней программы" и они не смогут воспроизвести Ваши условия тестирования.
Рекомендую отказаться от подобной манеры выкладывать проблемные батники. Попробуйте заменить %~dp2 на простую переменную и отлаживайте батник именно в таком виде. В таком же виде выкладывайте Ваш батник на форум, если возникли вопросы. После отладки батника Вы сможете заменить переменную на Вашу %~dp2 и получить рабочую конструкцию.
-
alpap
Re: CMD/BAT - [решено] Запаковать папку с именем дата время
gora,
Ну хорошо. Кое что наладил, но не получается переименовать файл
PHP код:
Хочу назад вернуть точки - где ошибка?
Ну хорошо. Кое что наладил, но не получается переименовать файл
PHP код:
Код: Выделить всё
@echo on
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 "sleshn=%slesh:-=.%"
ren "%slesh%" "%sleshn%"
pause
Хочу назад вернуть точки - где ошибка?
-
alpap
Re: CMD/BAT - [решено] Запаковать папку с именем дата время
Извиняюсь, нашел, во второй переменной путь указан, а надо просто имя. Получилось так:
Код:
Код:
Код: Выделить всё
@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-
gora
Re: CMD/BAT - [решено] Запаковать папку с именем дата время
Цитата alpap:
где ошибка?
Она не одна:
1
Код:
Первый символ в имени папки не может быть пробел. Мне не удалось создать такую папку ни в Проводнике, ни в Total Commander.
2
Код:
Непонятно зачем отрезать последний символ из имени папки (там не слеш).
Это ни чего не дает кроме путаницы.
3
Код:
Архиватор не понимает, где здесь имя архива, а где имя упаковываемого объекта. Нужно указать расширение у архива и тогда он все поймет.
4
Код:
Вы же, как я понял, хотите переименовать архив, а указываете путь с именем папки (нет расширения и это уже не архив, а папка). Нужно указать расширение переименовываемого файла.
В команде ren вторым параметром идет новое имя файла без пути!
Ну и в заключении Ваш батник без лишних "выкрутасов" с переименованиями.
Код:
где ошибка?
CMD/BAT - [решено] Запаковать папку с именем дата время
Она не одна:
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-
alpap
Re: CMD/BAT - [решено] Запаковать папку с именем дата время
gora,
Цитата gora:
ren "%slesh%.7z" "%sleshn%"
- здесь тоже не идет из-за наличия пути в %sleshn%.
А архиватор расширение 7z сам добавляет по-умолчанию, главное чтобы обр слеша не было.
Цитата gora:
ren "%slesh%.7z" "%sleshn%"
CMD/BAT - [решено] Запаковать папку с именем дата время
- здесь тоже не идет из-за наличия пути в %sleshn%.
http://forum.oszone.net/attachment.p...1&d=1432312045
А архиватор расширение 7z сам добавляет по-умолчанию, главное чтобы обр слеша не было.