Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

The Windows CMD utility has a number of internal commands, such as mklink. How can they be used from the msys shell ?

From CMD's documentation, the /c switch can be used to execute a command and exit; but this doesn't seem to work.

  • If I do cmd /c mklink the mklink command is not executed and the CMD shell is not exited.

Before pressing Enter:

enter image description here

After:

enter image description here

Process Monitor screenshot:

enter image description here

  • Trying to run the command as a background process: cmd /c mklink & apparently works - the mklink command is executed, but the CMD shell is not terminated. Every time Enter is pressed, CMD will become the active shell.
share|improve this question
    
cmd /c mklink works for me with my C shell, with Cygwin bash and with cmd.exe. But I did have to be running elevated or else I got complaints, "You do not have sufficient privilege to perform this operation." I haven't tried msys because I don't have it installed but I'm skeptical that's the problem. I'm suspicious there's something else going on. A transcript or a screen shot of what you did and what happened might be helpful. –  Nicole Hamilton Jan 1 '13 at 18:53
    
@NicoleHamilton, screenshots added. For mklink to work, the shell does indeed need to be run as administrator; but my problem is that I can't run any of the internal commands without the cmd shell either taking over or running in the background. This issue is also present for simpler commands which do not require admin, such as dir. –  Mihai Rotaru Jan 1 '13 at 19:53
    
Do you have an alias, procedure definition or script that may be intercepting cmd? –  Nicole Hamilton Jan 1 '13 at 20:04
    
@NicoleHamilton, nope; I took @Maxiums' advice and ran Process Monitor, and as can be seen in the screenshot I attached, the issue is that msys converts /c to c:\ . The answer is to escape it, and run the command as cmd //c mklink. –  Mihai Rotaru Jan 1 '13 at 21:29

1 Answer 1

up vote 5 down vote accepted
  1. Search your %PATH% for cmd.cmd or cmd.bat. They may interfere with your cmd

  2. Run Process Monitor and run your cmd /c mklink. Examine ProcMon log for really executed commands.

share|improve this answer
6  
Process Monitor helped track down the issue. It is that msys will convert /c to c:\ ; it needs to be escaped: cmd //c mklink. The way these conversions are done is explained here. –  Mihai Rotaru Jan 1 '13 at 21:32

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.