Eu sei que %0
contém o caminho completo do script em lote, por exemploc:\path\to\my\file\abc.bat
Eu seria path
igual ac:\path\to\my\file
Como eu consegui isso?
windows
batch-file
Misha Moroshko
fonte
fonte
Respostas:
%~dp0
será o diretório Aqui está uma documentação sobre todos os modificadores de caminho . Coisas divertidas :-)Para remover a barra invertida final, você pode usar a
:n,m
sintaxe da substring, da seguinte maneira:Não acredito que haja uma maneira de combinar a
%0
sintaxe com a:~n,m
sintaxe, infelizmente.fonte
%~0\..
- sabia que tinha que haver uma maneira melhor! Além disso, você provavelmente desejará colocar%~dp0
aspas duplas (""
) caso haja espaços no nome do diretório etc.%~dp0
contém o `` no final. Você tem uma idéia de como removê-lo?SET msg=hello world
funciona bem). No entanto, ao usar% mypath% em outro lugar, você deve tomar cuidado para usá-lo entre aspas, embora eles também não sejam necessárioscd
.Você pode usar o script a seguir para obter o caminho sem arrastar "\"
fonte
%~dp0
pode ser um caminho relativo. Para convertê-lo em um caminho completo, tente algo como isto:fonte
%~dp0
diretamente?%~dp0
pode ser relativo, o que pode ou não ser um problema, dependendo do caso de uso%~dp0
não pode conter um caminho relativo,d
significa unidade ep
caminho, como uma unidade pode ser relativa?%~dp0
, será um caminho absoluto, mesmo quando o script foi executado como um caminho relativo. Graças ao comentário de jeb, não fui enganado por esta resposta. Por que as pessoas inventam coisas e vão começar a espalhar sua imaginação selvagem para outras pessoas? Eu tenho esse colega que faz isso, mas culpei a idade dele (jovem). Eu gostaria que meu voto negativo contasse.Você pode usar
%~dp0
, d significa apenas a unidade, p significa apenas o caminho, 0 é o argumento para o nome completo do arquivo em lotes.Por exemplo, se o caminho do arquivo fosse C: \ Users \ Oliver \ Desktop \ example.bat, o argumento seria igual a C: \ Users \ Oliver \ Desktop \, você também poderá usar o comando
set cpath=%~dp0 && set cpath=%cpath:~0,-1%
e usar o comando%cpath%
variável para remover a barra final.fonte
%cd%
fornecerá o caminho do diretório a partir do qual o script está sendo executado.Apenas corra:
fonte
%CD%
é a pasta de trabalho atual, não a pasta em que o arquivo em lotes está armazenado. Eles podem ser o mesmo local, mas geralmente não são.Essa seria a
%CD%
variável.%CD%
retorna o diretório atual em que o script em lote está.fonte
CD C:\Temp <CR> ECHO %CD%
(<CR>
é newline ...)Estou trabalhando em uma máquina com Windows 7 e acabei usando as linhas abaixo para obter o caminho absoluto da pasta para o meu script bash.
Cheguei a esta solução depois de consultar http://www.linuxjournal.com/content/bash-parameter-expansion .
fonte