![]() |
bat. Копирование папок из текущей директории
Здравствуйте.
Как написать батник который копировал бы папки относительно текущей директории, т.е. папки где лежит сам bat-файл? Необходимо: 1. Скопировать из "текущая директория\ folder 111" в "уровень выше текущей директории" 3. Скопировать из "текущая директория\ folder 222" в "C:\Users\User_Name\Documents" В первом случае надо скопировать папку «folder 111», расположенную директорией ниже в папку директорией выше. Во втором примере папку «folder 222», расположенную директорией ниже в системную папку "Документы". |
Цитата:
Код:
@echo off Цитата:
Код:
@echo off Код:
@echo off |
Цитата:
Но с первым кодом, где копируем на уровень выше не получилось. Дело в том, что батник запускается через exe-файл лежащий в другом месте, и папка копируется на уровень выше той папки где находится экзешник, а не там где лежит bat. И еще непонятен момент с более глубокими по вложенности уровнями папок, например таким образом: Скопировать из "текущая директория\folder 1\ folder 2\ folder 3" в "уровень выше текущей директории" |
Цитата:
Меня терзают смутные сомнения, что Вы путаете понятия «текущий каталог» и «каталог, в котором расположен пакетный файл». Цитата:
Код:
@echo off |
Цитата:
Спасибо за помощь, с путями копирования вроде разобрался. Но остался один нерешенный вопрос. Копирую через батник папку с файлами в системную папку «Документы». Добавил в код батника ключ: /y, чтобы файлы перезаписывались, но файлам находящимся в папке «Документы» присвоен атрибут «Только чтение», что в итоге влечет запись в командной строке: "Отказано в доступе". Файлы, соответственно, не перезаписываются и ключ: /r не помогает. Как можно выйти из данной ситуации? |
Цитата:
Покажите. |
Цитата:
Код:
@echo off |
Цитата:
P.S. Вы знаете имена всех этих файлов? |
Цитата:
Код:
A C:\Users\Nikolay\Documents\BioWare\Mass Effect\Config\BIOCredits.ini |
Цитата:
И что интересно, из приведённого вывода и ранее приведённого Вами кода выясняется масса интересных, никак ранее не упоминавшихся подробностей. То, что Вы описывали в техзадании, имеет мало общего с тем, что Вам на самом деле нужно. Покажите реально используемый Вами код, не с «set "GetFolder1=folder 3"», а с тем, что там есть у Вас на самом деле. |
Цитата:
Код:
XCopy /y /k /r /e ".\Extras\Mouse\Config" "%UserProfile%\Documents\BioWare\Mass Effect\Config\" Вот выражение аналогичное вышеприведенному, но с обращением к реестру: Код:
for /f "tokens=3" %%i in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal') do set "root_doc=%%~i" C:\Users\Nikolay\Documents\BioWare\Mass Effect\Config и копировать по этому пути файлы, НО! - в первом случае это работает, а во втором - нет. Во втором варианте создается папка %UserProfile% в директории с батником, и файлы копируются туда. Что я делаю не так? |
Цитата:
Код:
@echo off |
Цитата:
Код:
@echo off Код:
if exist "%root_doc%\BioWare\Mass Effect\Config" |
Browning Zed, где выдаёт? Закомментируйте временно @echo off посредством rem и покажите результат выполнения в виде текста, обрамив его тэгом code.
|
Код:
D:\Games\Store\Steam\steamapps\common\Mass Effect>rem @echo off |
Browning Zed, закрывающую кавычку забыли при:
Код:
if exist "%root_doc%\BioWare\Mass Effect\Config" ( |
Цитата:
Спасибо форумчанам Iska и alpap за помощь. Вопрос можно считать решенным. |
Время: 09:46. |
Время: 09:46.
© OSzone.net 2001-