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.
Title: Re: %~dp0 vs %cd%
Post by: Ciyar on March 15, 2018, 03:37:10 AM
I wonder if this topic will be dredged up again in 2016. ;)

Even after 4 years...... :P :D :D
Title: Re: %~dp0 vs %cd%
Post by: patio on March 17, 2018, 11:18:04 AM
*** sigh ***
Title: Re: %~dp0 vs %cd%
Post by: Squashman on March 17, 2018, 10:03:07 PM
It's had a good run - but I might be 6 foot under in 2020 ;)
RIP my friend.
Title: Re: %~dp0 vs %cd%
Post by: Salmon Trout on March 18, 2018, 04:25:23 AM
As the former Dias de Verano, can I say (a little early) happy 10th anniversary to this thread!
Title: Re: %~dp0 vs %cd%
Post by: patio on March 18, 2018, 07:16:13 AM
Tell good 'ol Diaz i said Hi...... :P
Title: Re: %~dp0 vs %cd%
Post by: Salmon Trout on March 18, 2018, 07:19:25 AM
He says hola, mi amigo!
Title: Re: %~dp0 vs %cd%
Post by: patio on March 18, 2018, 09:07:43 AM
 ;D
Title: Re: %~dp0 vs %cd%
Post by: Geek-9pm on March 18, 2018, 02:16:42 PM
RIP my friend.
When did he pass away?
Title: Re: %~dp0 vs %cd%
Post by: BC_Programmer on March 18, 2018, 02:24:30 PM
Thursday Nov 3rd 2016.

Don's Topic (https://www.computerhope.com/forum/index.php/topic,158835.0.html)

Dostips Topic (https://www.dostips.com/forum/viewtopic.php?f=3&t=7529&p=50015#p50015)
Title: Re: %~dp0 vs %cd%
Post by: Salmon Trout on March 18, 2018, 02:55:05 PM
When did he pass away?
Shortly before you said how sad it was.
Title: Re: %~dp0 vs %cd%
Post by: Geek-9pm on March 18, 2018, 08:51:50 PM
 Foxidrive
Quote
passed away on Thursday 3rd November 2016
My memory is fading.    :-[
Could somebody put a note in his profile?