Вопрос по batch-file, exe, shortcut, cmd, 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   ответов
14

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

9

"% CD%" \ Bin \ Iris.exe

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

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

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

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

%~dp0\bin\Iris.exe

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

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

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