PDA

Показать полную графическую версию : [решено] Как подставить относительный путь в BAT-файл?


Avatar-Lion
04-09-2018, 22:00
Полчаса уже мучаю Гугл и Яндекс, но то ли я дурак, то ли лыжи не едут... Задача банальная: ВАТ-файл запускается из разных мест, т.е. путь к нему все время разный. Цель у ВАТ-файла очень простая: удалить несколько файлов и скопировать взамен них новые. Например:
Erase "C:\Program Files\desktop.ini"
XCopy "%~dp0\Program Files\desktop.ini" "C:\Program Files\desktop.ini"

(вместо %~dp0 должна быть текущая буква флэшки)

Пробовал также точку и %CD%, но они также не дают эффекта. Вроде абсолютно примитивное действие, но ничего не получается...

Iska
04-09-2018, 22:16
Avatar-Lion, относительным путь может быть только относительно чего-то. Можно, например, пытаться использовать путь относительно самого пакетного файла. Где он расположен по отношению к тому, что требуется представить с относительным путём?

Avatar-Lion
04-09-2018, 22:26
Где он расположен по отношению к тому, что требуется представить с относительным путём? »
Да где угодно. Если надо, могу его положить рядом с теми же папками, содержимое которых буду копировать.

Суть просто в том, что наверняка потребуются права администратора, чтобы удалять файлы в системных каталогах и копировать туда новые файлы. Я планировал запускать ВАТ-файл по правой кнопке (от имени администратора). Или это не будет работать?

Petya V4sechkin
04-09-2018, 22:27
Avatar-Lion, ну так вы можете для тестирования просто вставить эхо:
Echo %~dp0
Echo %~d0
Pause
и сразу поймёте (в первом случае - полный путь до батника, во втором - раздел, на котором лежит батник).

Avatar-Lion
04-09-2018, 23:11
Фу, чёрт, оказывается надо было %~dp0 без \ указывать... Всё, теперь все копирует. Спасибо.

Iska
04-09-2018, 23:29
Я планировал запускать ВАТ-файл по правой кнопке (от имени администратора). Или это не будет работать? »
С относительными путями — навряд ли, поскольку при этом текущий каталог сменится на путь к исполняемому файлу %comspec% — обычно c:\Windows\System32. Но Вы ведь не используете относительные пути, Вы используете абсолютные.




© OSzone.net 2001-2012