Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get current batchfile directory

Firstly, I saw this topic but I couldn't understand that.

Question :

There is a batch file in D:\path\to\file.bat with following content :

echo %cd% pause 

Output is :

C:\ 

It must be D:\path\to

What am I doing wrong?

like image 815
Hamed Kamrava Avatar asked Jun 12 '13 11:06

Hamed Kamrava


2 Answers

System read-only variable %CD% keeps the path of the caller of the batch, not the batch file location.

You can get the name of the batch script itself as typed by the user with %0 (e.g. scripts\mybatch.bat). Parameter extensions can be applied to this so %~dp0 will return the Drive and Path to the batch script (e.g. W:\scripts\) and %~f0 will return the full pathname (e.g. W:\scripts\mybatch.cmd).

You can refer to other files in the same folder as the batch script by using this syntax:

CALL %0\..\SecondBatch.cmd 

This can even be used in a subroutine, Echo %0 will give the call label but, echo "%~nx0" will give you the filename of the batch script.

When the %0 variable is expanded, the result is enclosed in quotation marks.

More on batch parameters.

like image 154
Stoleg Avatar answered Sep 20 '22 18:09

Stoleg


Very simple:

setlocal cd /d %~dp0 File.exe 
like image 20
shay Avatar answered Sep 23 '22 18:09

shay