Вопрос по shortcut, batch-file, cmd, exe, relative – относительный путь в скрипте BAT

106

Вот моя собственная папка программы на моем драйвере USB:

Program\
     run.bat
     bin\
         config.ini
         Iris.exe
         library.dll
         etc.

Я хотел бы использовать run.bat для запуска Iris.exe

Я не могу использовать это: F: /Program/bin/Iris.exe как ярлык, потому что иногда он не дает мне имя драйвера F (E, G)

Что мне нужно записать в файл bat, чтобы работать как брелок? Я попробовал это в файле BAT:

 ˝\bin\Iris.exe˝ 

Это не работает :(

Ваш Ответ

5   ответов
4

bin\Iris.exe (без косой черты - потому что это означает, что все начинается с корня)

же\Program\bin\Iris.exe (полный путь)

Я предположил, что текущий диск будет флешкойс диска, и текущая папка будет\Program - разве это не так? Вы можете показать это с помощью простогоcd Команда в строке, прежде чем пытаться запустить .exe AjV Jsy
bin \ Iris.exe это не работает :( Я неМне не нравится использовать root, потому что когда-нибудь, возможно, я переместу этот каталог в другое место. А что, если я спрашиваю у ОС текущий абсолютный путь? и я буду использовать это для запуска exe в бен? user2083037
Просто используя относительный путь выигралТ обязательно работать. Путь будет относительно текущего рабочего каталога, который может отличаться от родительского каталога.run.bat Ansgar Wiechers
231

Используйте это в вашем командном файле:

%~dp0\bin\Iris.exe

%~dp0 разрешает полный путь к папке, в которой находится пакетный скрипт.

На самом деле это разрешает что-то вродеC:\myDir\\bin\Iris.exe (обратите внимание на двойной обратный слеш). Это все еще работает, но убирает обратную косую черту до того, как «бен»очиститель"? -> ,%~dp0bin\Iris.exe mozzbozz
КЛАССНО! Это сработало для меня! Mohammad Anini
@mozzbozz Если вы можете гарантировать, что%~dp0 всегда будет иметь обратную косую черту, оба оператора будут работать. В противном случае тот, с дополнительной обратной косой чертой, является более безопасным вариантом. Ansgar Wiechers
Хорошо, этоЭто точка. Я'мы проверяли это только на двух разных компьютерах с Windows 7, в других местах они могут отличаться (XP, Vista или Windwos 8 -> Я нене знаю, но: логика Microsoft, и я не могне найти никаких документов об этом;)). Тем не менее, я обнаружил, что я должен был поставить кавычки вокруг него ("%~dp0\bin\Iris.exe") как путь был пробел в нем :) Просто чтобы бытьдействительно уверен, что это работает на каждом компьютере. mozzbozz
следует пометить как правильный ответ на вопрос Marcel Djaman
9

%CD%"\ Bin \ Iris.exe

Это терпит неудачу, когда текущий каталог неProgramэто произойдет, если дважды щелкнутьrun.bat от исследователя.%CD% текущий каталог%~dp0 каталог самого пакетного файла jeb
Правда, я обнаружил, что% ~ dp0 работает лучше Johan A.
32

FOR %%? IN (file_to_be_queried) DO (
    ECHO File Name Only       : %%~n?
    ECHO File Extension       : %%~x?
    ECHO Name in 8.3 notation : %%~sn?
    ECHO File Attributes      : %%~a?
    ECHO Located on Drive     : %%~d?
    ECHO File Size            : %%~z?
    ECHO Last-Modified Date   : %%~t?
    ECHO Parent Folder        : %%~dp?
    ECHO Fully Qualified Path : %%~f?
    ECHO FQP in 8.3 notation  : %%~sf?
    ECHO Location in the PATH : %%~dp$PATH:?
)
14

%CD% дает путь, из которого был вызван скрипт, а не путь скрипта, однако,%~dp0 даст путь к самому сценарию.

Похожие вопросы