Computer Hope

Microsoft => Microsoft DOS => Topic started by: optix2000 on April 01, 2008, 09:42:04 PM

Title: %~dp0 vs %cd%
Post by: optix2000 on April 01, 2008, 09:42:04 PM
Hello,

Just wondering what's the difference in using %~dp0 or %cd% to find the current directory, since I'm not sure that either one will work in every case. Or do both work exactly the same?

Thanks.
Title: Re: %~dp0 vs %cd%
Post by: Dias de verano on April 02, 2008, 12:33:19 AM
They are not equivalent.

%cd% is available either to a batch file or at the command prompt and expands to the drive letter and path of the current directory (which can change e.g. by using the CD command)

%~dp0 is only available within a batch file and expands to the drive letter and path in which that batch file is located (which cannot change). It is obtained from %0 which is the batch file's name.

An experiment like the following shows the difference

Here is D:\dirshow.bat:

Code: [Select]
@echo off
echo this is %%cd%%  %cd%
echo this is %%~dp0 %~dp0

Run it from C:\ and this is what you see

Code: [Select]
C:\>D:\dirshow.bat
this is %cd%  C:\
this is %~dp0 D:\
Title: UNC Paths
Post by: mplichta on March 23, 2012, 09:59:01 AM
There is one more important distinction to note.  Normally the command prompt, and therefore cmd files, don't support UNC paths.

However, using %~DP0 you can use relative paths to install software without mapping a drive.  The command below is what I use to install Adobe Design Premium and it works from any path, UNC, Flash drive, or mapped drive.

msiexec /i "%~dp0\DP 32bit Basic\Build\DP 32bit Basic.msi" /q

I use this by typing \\server\share\software\adobe CS5 into the start menu or run command (xp).  From there I can just double click a cmd file containing the command above. 
Title: Re: %~dp0 vs %cd%
Post by: patio on March 23, 2012, 10:00:55 AM
It's been 4 years...
Title: Re: %~dp0 vs %cd%
Post by: OnePostPony on October 18, 2012, 06:51:08 AM
It's been 4 years...

So what? I stumbled upon this thread today and found both replies useful.
Title: Re: UNC Paths
Post by: foxidrive on October 18, 2012, 08:04:36 AM
There is one more important distinction to note.  Normally the command prompt, and therefore cmd files, don't support UNC paths.

I don't think you are correct.

This should work just fine

Code: [Select]
xcopy "\\server\share1\*.txt" "\\server\share2\"
and this too:

Code: [Select]
pushd "\\server\share\software\adobe CS5"
msiexec "\DP 32bit Basic\Build\DP 32bit Basic.msi" /q
popd
Title: Re: %~dp0 vs %cd%
Post by: TechnoGeek on October 18, 2012, 08:14:39 AM
More specifically, cmd.exe (including executed .bat files, .cmd files, etc.) does not support the current/working directory to be a UNC path. pushd gets around this by assigning and switching to a drive letter that is mapped to the target path, and most other programs (commandline or not) work perfectly fine with a UNC path.
Title: Re: %~dp0 vs %cd%
Post by: patio on October 18, 2012, 08:31:09 AM
It's been 4 years...
Title: Re: %~dp0 vs %cd%
Post by: foxidrive on October 18, 2012, 09:23:30 AM
It's been 4 years...

I wonder if this topic will be dredged up again in 2016. ;)
Title: Re: %~dp0 vs %cd%
Post by: patio on October 18, 2012, 09:35:40 AM
Judging by it's history...i'd say that's a safe bet...

Seeya then...
Title: Re: %~dp0 vs %cd%
Post by: rsf722 on September 21, 2015, 12:33:00 PM
Not quite 2016 yet, but I found this very helpful.
Title: Re: %~dp0 vs %cd%
Post by: Geek-9pm on September 21, 2015, 12:57:14 PM
It's been 4 years...
Batch is slow...  ::)
Title: Re: %~dp0 vs %cd%
Post by: Squashman on September 21, 2015, 01:08:37 PM
I wonder if this topic will be dredged up again in 2016. ;)
Close enough.
Title: Re: %~dp0 vs %cd%
Post by: Fighthouse on January 04, 2016, 07:44:41 AM
This thread helped me out with a batch script at the end of last year. Thank you so much!
Title: Re: %~dp0 vs %cd%
Post by: patio on January 04, 2016, 08:00:02 AM
I wonder if this topic will be dredged up again in 2016. ;)

Sonofagun....you were correct.... :P
Title: Re: %~dp0 vs %cd%
Post by: DaveLembke on January 04, 2016, 08:11:08 AM
LOL Like the Matrix Oracle ...would you like a cookie  8)
Title: Re: %~dp0 vs %cd%
Post by: foxidrive on January 05, 2016, 03:01:11 AM
It's had a good run - but I might be 6 foot under in 2020 ;)
Title: Re: %~dp0 vs %cd%
Post by: Nathansswell on February 25, 2017, 02:37:19 PM
I'm just here for 2017, don't mind me.