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

Running a .bat file as administrator - Correcting current directory

, 20 Oct 2010 CPOL
Rate this:
Please Sign up or sign in to vote.
How to set the current directory correctly when running batch scripts as administrator
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)

Share

About the Author

Simon P Stevens
Software Developer
United Kingdom United Kingdom
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.
Follow on   Twitter

Comments and Discussions

 
GeneralMy vote of 5 PinmemberMember 838737319-Jun-13 12:50 
GeneralMy vote of 5 PinmemberBrijesh_Guptra30-May-13 0:40 
GeneralMy vote of 5 Pinmemberwout de zeeuw31-Oct-12 3:15 
GeneralMy vote of 5 PinmemberTheMasterCylinder16-Oct-12 7:16 
GeneralMy vote of 5 Pinmemberpolonggo7-Jun-12 18:37 
GeneralReason for my vote of 5 Great Help, Looking for It. Pinmembersumantamca22-Feb-12 20:32 
GeneralReason for my vote of 5 Thank you so much! Pinmember_WhiteRussian12-Nov-11 4:04 
GeneralGood spot - thanks for sharing PinmemberReiss1-Sep-11 23:55 
GeneralSensible advice. Love, you can easily find this documented b... PinmemberRasqual Twilight21-Feb-11 8:24 
GeneralWherever did you find that ~dp ? Good job ! ;) PinmemberLove Nystrom28-Oct-10 5:39 
GeneralRe: Wherever did you find that ~dp ?Good job ! ;) PinmemberPIEBALDconsult22-Mar-12 12:10 
At the command line, type CALL /?
GeneralReason for my vote of 5 Tricks like these are stumbled upon ... PinmemberE.F. Nijboer22-Oct-10 12:09 

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

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web03 | 2.8.141015.1 | Last Updated 20 Oct 2010
Article Copyright 2010 by Simon P Stevens
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid