Obter arquivo em lote para executar em relação à pasta real, não atalho

8

Criei alguns arquivos em lotes que movem os arquivos em relação à pasta em que o arquivo está.

Adicionei a pasta à minha barra de tarefas usando as barras de ferramentas => nova barra de ferramentas ..., mas agora quando executo os arquivos em lotes, a posição inicial é Meus documentos (U :), não o local real dos arquivos em lotes. Existe alguma maneira de fazê-lo usar o caminho real?

ck.
fonte

Respostas:

10

Coloque o seguinte na parte superior do seu arquivo em lotes:

CD /D %~dp0

Explicação:

  • A /Dopção informa CDpara alterar a unidade atual e o diretório atual de uma unidade.
  • %0 é o nome do arquivo em lote
  • O ~diz que queremos usar alguns modificadores
  • d expande para letra da unidade.
  • p expande para um caminho.

O mesmo %~dp0ocorre com o diretório em que o arquivo em lotes reside.

Dave Webb
fonte
O CD funciona perfeitamente, mas não altera a designação da unidade; portanto, o script ainda tenta executar em U: \
ck.
Adicionou% ~ d0 para alterar a unidade seguindo sua explicação.
ck.
@ck - Esqueceu-se das unidades, desculpe. Provavelmente é mais fácil de usar CD /D. Editou a resposta para refletir isso.
Dave Webb
podemos usar em PUSHDvez deCD /D
Tuan Anh Hoang-Vu