Click here to Skip to main content
Click here to Skip to main content

Running a .bat file as administrator - Correcting current directory

By , 20 Oct 2010
 
When you run a batch file as administrator under windows vista and 7 the current directory gets set to C:\windows\system32. This can prevent your scripts from working correctly if you use relative paths.
 
To fix this problem, include these two lines at the top of your .bat script:
 
@setlocal enableextensions
@cd /d "%~dp0"
 
This will change the current directory to the location of the .bat file.
 
How it works:
 
@setlocal enableextensions - controls the visibility of environment variables[^] and enables cmd extensions[^].
 
@cd /d "%~dp0" - Changes the current directory to %~dp0 which is a special batch parameter[^] that expands to the drive and directory that batch file is located in.
 
%0 expands to the full path and file name of the batch file, adding the ~dp modifier in the middle to make %~dp0 reduces the %0 value to just the drive and path.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Simon P Stevens
Software Developer
United Kingdom United Kingdom
Member
I discovered programming aged 11 with my school's BBC micro, and a book titled "Write your own space action games". (Their ideas of "space action" games were very different to mine. My ideas didn't include a bunch of * signs controlled via a text based menu)
 
I got hooked on VB for a while (mainly because I discovered I could replace the * signs with .bmp files) until someone pointed out the wonderful world of objects and Java. I also went thought a c++ phase.
 
I've now been a professional developer for 5 years.
 
My current language of choice is C#. I spend my free time playing with XNA and microcontrollers.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralMy vote of 5memberwout de zeeuw31 Oct '12 - 3:15 
Pure genius!
GeneralMy vote of 5memberTheMasterCylinder16 Oct '12 - 7:16 
Clear, simple, useful. Thanks!
GeneralMy vote of 5memberpolonggo7 Jun '12 - 18:37 
It just simply works. Thanks.
GeneralReason for my vote of 5 Great Help, Looking for It.membersumantamca22 Feb '12 - 20:32 
Reason for my vote of 5
Great Help, Looking for It.
GeneralReason for my vote of 5 Thank you so much!member_WhiteRussian12 Nov '11 - 4:04 
Reason for my vote of 5
Thank you so much!
GeneralGood spot - thanks for sharingmemberReiss1 Sep '11 - 23:55 
Good spot - thanks for sharing
GeneralSensible advice. Love, you can easily find this documented b...memberRasqual Twilight21 Feb '11 - 8:24 
Sensible advice.
Love, you can easily find this documented by typing CALL /?
GeneralWherever did you find that ~dp ? Good job ! ;)memberLove Nystrom28 Oct '10 - 5:39 
Wherever did you find that ~dp ?
Good job ! Wink | ;)
GeneralRe: Wherever did you find that ~dp ?Good job ! ;)memberPIEBALDconsult22 Mar '12 - 12:10 
At the command line, type CALL /?
GeneralReason for my vote of 5 Tricks like these are stumbled upon ...memberE.F. Nijboer22 Oct '10 - 12:09 
Reason for my vote of 5
Tricks like these are stumbled upon and you simply know that sharing will help many that were simply not so lucky to ever come across this. Thanks!

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web01 | 2.6.130523.1 | Last Updated 20 Oct 2010
Article Copyright 2010 by Simon P Stevens
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid