Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I have a bat file on windows that execute a procdump operation. The issue with the batch file is that I need to cd to the batch file directory first before executing the job, or else the script won't work.

How to change to the current batch file directory?

I tried the following code in my procdump.bat:

cd "%~dp"
procdump -h devenv.exe mydump.txt

But it failed, the error message is:

The following usage of the path operator in batch-parameter substitution is invalid: %~dp"

For valid formats type CALL /? or FOR /?

Edit: The answer provided is working, but there is only one catch: if my current directory is different than the batch file directory, then I would get a "The system cannot find the path specified". Anyone has any ideas?

This is a screenshot of the error:

alt text

share|improve this question
    
Where do you get that "%~dp" from? –  fretje Dec 18 '09 at 14:27

2 Answers 2

up vote 3 down vote accepted

Ok, I think I found here what you mean with %~dp.

I think what you really want to do is this:

cd "%~dp0" /D

(!) But note that this will still not give you the right behaviour when you're trying to execute your batch while the current directory is on another drive as cd doesn't change the active drive.

Edit: Apparently (thanks @Yoopergeek) you can add the /D parameter to the cd command to let it also change the active drive.

share|improve this answer
    
For more information on these batch parameters, see help call at a cmd prompt. –  Dennis Williamson Dec 18 '09 at 15:00
    
By the way, you can combine those parameters like this: %~dp0 –  Dennis Williamson Dec 18 '09 at 15:02
    
@Dennis: Thanks! Updated my answer. –  fretje Dec 18 '09 at 15:12
    
Your answer is helpful; but if my current directory is at a different directory that the batch file, then the above command will fail; even cd /D or cd "%~dp0" /D can't help. –  Graviton Dec 18 '09 at 15:58
1  
I've found the solution by using cd /D "%~dp0". Thanks. –  Graviton Jan 6 '10 at 3:22

I'd leave a comment to fretje's answer, but evidently I can't???


Anyway, regarding the note:
But note that this will still not give you the right behaviour when you're trying to execute your batch while the current directory is on another drive as cd doesn't change the active drive.


Use the /D switch in your CD command, and CD will change the active drive.

share|improve this answer
    
...yet I can comment on my own answer. Man, sucks to have no rep on ServerFault...wish some SO rep 'bled' over to here. –  Yoopergeek Dec 18 '09 at 14:44
    
@Yoopergeek: you can associate your accounts. That'll give you 100 rep here if your rep on SO is higher than 200. –  fretje Dec 18 '09 at 14:53
    
Btw: Thanks, I'll update my answer ;-) –  fretje Dec 18 '09 at 14:54

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.