|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Перемещение файла/папки в выбранную директорию |
|
CMD/BAT - [решено] Перемещение файла/папки в выбранную директорию
|
Ветеран Сообщения: 1274 |
Добрый день!
Подскажите, возможно ли посредством bat переместить файл или папку в выбранную директорию на компьютере. Например: Архивирую папку @echo off cd /d "%~dp2.." set slesh=%~dp2 If "%slesh:~-1%"=="\" set slesh=%slesh:~0,-1% "C:\Program Files\7-Zip\7z.exe" a "%slesh%" "%~dp2" exit Или файл @echo off cd /d "%~dp2" "C:\Program Files\7-Zip\7z.exe" a "%~dpn2" "%~df2" exit Распаковываю архив в папку @echo off cd /d "%~dp2" "C:\Program Files\7-Zip\7z.exe" x -t* "%~df2" -o"%~dpn2" -y exit Или на месте @echo off cd /d "%~dp2" "C:\Program Files\7-Zip\7z.exe" x -t* "%~df2" -o"%~dp2" -y exit Теперь надо, наверное, вызвать explorer.exe выбрать в компьютере папку или создать новую и переместить туда - "%~d?(??)2". На это у меня ума (вернее опыта) не хватает, а может это и нереально. На vbs тоже устроит, если невозможно (если вообще возможно) на bat. |
|
Отправлено: 19:07, 14-05-2015 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Цитата alpap:
Если б ещё знать, что такое "%~dp2", "%~df2" и "%~dpn2" в контексте данного кода ![]() Код пакетного файла: @echo off cd /d "%~dp2" "C:\Program Files\7-Zip\7z.exe" x -t* "%~df2" -o"%~dpn2" -y >nul chcp 1251 for /f "delims=" %%i in (' mshta vbscript:Execute("On Error Resume Next:CreateObject(""Scripting.FileSystemObject"").GetStandardStream(1).Write(CreateObject(""Shell.Application"").BrowseForFolder(0,"""",1,""::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"").Self.Path):Close()"^) ') do ( >nul (chcp 866& move/y "%~dpn2" "%%i\") ) exit/b 0 . |
||
Отправлено: 03:37, 15-05-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Georgio,
Здравствуйте, Вы мне в другой теме так помогли - спасибо еще раз. Я там объяснял что такое "%~dp2", "%~df2" и "%~dpn2", здесь забыл. Я пользуюсь сторонней программой для редактирования контекстного меню, но там есть не все пункты которые мне нужны для комфортной работы и поэтому несколько приходиться дорабатывать с помощью батников. Более простые я тяну, а в принципе в программировании не силен, вот и приходиться просить помощи. А с помощью "%~dp2", "%~df2" и "%~dpn2" - что в сущности то же, что и с цифрой 1, но в родном к. меню windows, а у меня через мою программу это уже второй параметр и так я "железно" попадаю в нужную мне для работы директорию. Теперь по делу: Например: "%~df2"=C:\Users\Papenko\Desktop\apxiv.7z, идет распаковка по адресу -o"%~dpn2"=C:\Users\Papenko\Desktop\apxiv и она естественно происходит, окно консоли открыто (можно ли его не видеть?) и появляется окно проводника с выбором, где есть возможность выбрать папку или создать, что и хотелось - уже благодарю, но в выбранную папку содержимое архива не переносится. Но уже неплохо, осталось созданную папку с содержимым архива с места создания (а это рядом с архивом) переместить в пустую папку которая выбрана или скопировать, а первую удалить. Не знаю смогу ли сам, буду очень благодарен если поможете. И вопрос: я запаковал этот код в батник, но в коде есть ...vbscript..., не в vbs ли надо паковать случайно, хотя в bat вроде работает, только требуется доработка. Файл 125226 |
Последний раз редактировалось alpap, 15-05-2015 в 15:55. Отправлено: 15:23, 15-05-2015 | #3 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать alpap, здравствуйте!
Цитата alpap:
Приблизительно понятно. Цитата alpap:
Я думаю, что с этим надо будет нам разбираться, когда отладим код. Цитата alpap:
А что переносится? Вся папка целиком? Или ничего не переносится? Цитата alpap:
Попробуйте проще (разархивирование в выбранной папке): @echo off cd/d "%~dp2" >nul chcp 1251 for /f "delims=" %%i in (' mshta vbscript:Execute("On Error Resume Next:CreateObject(""Scripting.FileSystemObject"").GetStandardStream(1).Write(CreateObject(""Shell.Application"").BrowseForFolder(0,"""",1,""::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"").Self.Path):Close()"^) ') do ( >nul chcp 866& "C:\Program Files\7-Zip\7z.exe" x -t* "%~df2" -o"%%i" -y ) exit/b 0 . Цитата alpap:
Всё правильно. Код VBScript запускается из пакетного файла. |
|||||
Отправлено: 16:55, 15-05-2015 | #4 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Georgio,
Этот код работает, но если в пути папка в кириллице (самого архива или папки назначения), то пишет ее имя абракадаброй в консоли, но распаковывает правильно, путь находит. Кодировки уже менял по-разному в батнике и сохранял и в 866 и в 1251 (у меня AkelPad) - все равно так же? И окно консоли висит, но уже пустое, но висит. Еще такой вопрос ..."%~df2" -o"%%i" - так идет распаковка в папку, ..."%~df2" -o"%%i\%~n2" - так в новосозданную папку с именем архива, а в случаях запаковать, два варианта что у меня в шапке как-то также будет? |
|
Последний раз редактировалось alpap, 16-05-2015 в 10:18. Отправлено: 10:00, 16-05-2015 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Georgio,
Если убрать из батника все кодировки, а сам он в 866, то: C:\Users\Papenko\Desktop>("C:\Program Files\7-Zip\7z.exe" x -t* "C:\Users\Papenko\Desktop\Архив.7z" -o"C:\Users\Papenko\Desktop\╧ряър\Архив" -y ) - (скопировал с консоли), теперь папку не находит (она называется "Папка"), создает папку "╧ряър" и в нее успешно помещает папку "Архив" с содержимым архива. Как я понимаю проблема где-то в кодировке вот этого вложенного vbs, надо как-то ее менять ну или копать в том напрвлении. Если в этом варианте папка назначения "Papka", то все как по маслу. |
Последний раз редактировалось alpap, 16-05-2015 в 10:24. Отправлено: 10:17, 16-05-2015 | #6 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Все-таки с кодом
@echo off cd/d "%~dp2" >nul chcp 1251 for /f "delims=" %%i in (' mshta vbscript:Execute("On Error Resume Next:CreateObject(""Scripting.FileSystemObject"").GetStandardStream(1).Write(CreateObject(""Shell.Ap plication"").BrowseForFolder(0,"""",1,""::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"").Self.Path):Close()"^) ') do ( >nul chcp 866& "C:\Program Files\7-Zip\7z.exe" x -t* "%~df2" -o"%%i" -y ) exit/b 0 работает как надо, просто в консоли смотрел при проверке присутствуют кракозябры в имени, а вот как убрать висящее окно консоли? Пробовал конвертировать в .exe - получается убрать консоль (в скрытом), но гораздо дольше думает меню чем напрямую в bat, реально в батнике убрать или может лучше все в vbs сделать с скрытием окна консоли как-то, подскажите. |
Отправлено: 02:00, 18-05-2015 | #7 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Перебором утилит определил, что максимально быстро скрвает nircmd.exe, пока буду ее использовать, а вот скрипт на vbs для скрытия bat скрывает отлично но почему-то не выполняется дальше работа bat - не происходит распаковка файла в папку
![]() |
Отправлено: 13:04, 18-05-2015 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Поиск файла, перемещение, удаление исходной папки cmd\bat | KitsuNeko | Скриптовые языки администрирования Windows | 5 | 08-04-2013 18:21 | |
CMD/BAT - [решено] Перемещение файлов из одной папки в разные в зависимости от имени файла | Sarge81 | Скриптовые языки администрирования Windows | 4 | 20-09-2011 04:20 | |
CMD/BAT - [решено] Выбор файла из меню и копирование в нужную директорию. | gaikinn | Скриптовые языки администрирования Windows | 10 | 17-02-2011 13:52 | |
Разное - Как изменить добавление надписи "Копия" при копировании файла в исходную директорию | Keleborn | Microsoft Windows 2000/XP | 3 | 08-07-2009 14:21 | |
Разное - [решено] Перемещение папки Users | nikkor7 | Microsoft Windows Vista | 2 | 13-04-2009 11:58 |
|