BAT file to open CMD in current directory

WindowsCmdWindows Xp

Windows Problem Overview


I have many scripts which I interact with from the command line. Everytime I need to use them, I have to open a command line window and copy+paste and CD to the path to the directory they are in. This is tedious (they are in a rather deep file system, so typing out the full path is a pain, copy+paste is better but not much). I tried to create a .BAT file that I could double-click on that would open a new command-line window in the folder the .bat file exists in but it does not work. It opens a new window, but the working directory is not the directory that .bat file is in. Here's what I've got after much googling (My cmd skills ain't so great):

cd %CD%
cmd.exe

I know from when I used Linux that Konqueror had a "Command-line window here" feature, and that's the effect I'm trying to get on Windows.

Windows Solutions


Solution 1 - Windows

you probably want to do this:

cd /d %~dp0
cmd.exe

this will set your current directory to the directory you have the batch file in

Solution 2 - Windows

Create a file named open_dos_here.cmd with the following lines:

%~d1
cd "%~p1"
call cmd

Put this file at any folder. Then, go to your Send To folder (Win+E; Alt+D;shell:sendto;Enter). Create a shortcut to point to this open_dos_here.cmd

Then, in any folder, select any file or sub-folder. Right-click and select "Send To" and then select open_dos_here.cmd to open the DOS in that folder.

Solution 3 - Windows

You can just enter cmd into the address bar in Explorer and it starts up in that path. Likewise for PowerShell.

Solution 4 - Windows

There's more simple way

start /d "folder path"

Solution 5 - Windows

As a more general solution you might want to check out the Microsoft Power Toy for XP that adds the "Open Command Window Here" option when you right-click: http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx

In Vista and Windows 7, you'll get that option if you hold down shift and right-click (this is built in).

Solution 6 - Windows

I'm thinking that if you are creating a batch script that relies on the Current Directory being set to the folder that contains the batch file, that you are setting yourself up for trouble when you try to execute the batch file using a fully qualified path as you would from a scheduler.

Better to add this line to your batch file too:

REM Change Current Directory to the location of this batch file 
CD /D %~dp0

unless you are fully qualifying all of your paths.

Solution 7 - Windows

Another solution is to use a shortcut file to cmd.exe instead of a batch file.

Edit the shortcut's start in property to %~dp0.

You achieve the same thing, except it has the Cmd icon (and you can change this).

Some people don't like clicking on batch files without knowing what's in them, and some corporate network drives have a ban on .bat files...

Solution 8 - Windows

The simplest command to do this:
start

You can always run this in command line to open new command line window in the same location. Or you can place it in your .bat file.

Solution 9 - Windows

Most simple way in explorer is to Shift + right mouse click on the folder or on an empty space in the folder and click on Open command prompt here.

CMD will then start in that folder

I must say, I'm not sure if it works for Windows Vista and below, but it surely works for Windows 7, 8, 8.1 and 10.

Solution 10 - Windows

Referring to answer of @Chris,

We can also go to parent directory of batch file and run commands using following

cd /d %~dp0..
<OTHER_BATCH_COMMANDS>
cmd.exe

To understand working of command cd /d %~dp0.. please refer below link

https://stackoverflow.com/questions/18309941/what-does-it-mean-by-command-cd-d-dp0-in-windows

Solution 11 - Windows

You could add a context menu entry through the registry:

  1. Navigate in your Registry to HKEY_LOCAL_MACHINE/Software/Classes/Folder/Shell and create a key called "Command Prompt" without the quotes.

  2. Set the default string to whatever text you want to appear in the right-click menu.

  3. Create a new key within your newly created command prompt named "command," and set the default string to

     cmd.exe /k pushd %1
    

You may need to add %SystemRoot%\system32\ before the cmd.exe if the executable can't be found.

  1. The changes should take place immediately. Right click a folder and your new menu item should appear.

Also see http://www.petri.co.il/add_command_prompt_here_shortcut_to_windows_explorer.htm

Solution 12 - Windows

When you are in the desired folder , just type CMD in your address bar

Solution 13 - Windows

A bit late to the game but if I'm understanding your needs correctly this will help people with the same issue.

Two solutions with the same first step: First navigate to the location you keep your scripts in and copy the filepath to that directory.

First Solution:

  • Click "Start"
  • Right-click "Computer" (or "My Computer)
  • Click "Properties"
  • On the left, click "Advanced System Settings"
  • Click "Environment Variables"
  • In the "System Variables" Box, scroll down and select "PATH"
  • Click "Edit"
  • In the "Variable Value" field, scroll all the way to the right
  • If there isn't a semi-colon (;) there yet, add it.
  • Paste in the filepath you copied earlier.
  • End with a semi-colon.
  • Click "OK"
  • Click "OK" again
  • Click "OK" one last time

You can now use any of your scripts as if you were already that folder.

Second Solution: (can easily be paired with the first for extra usefulness)

On your desktop create a batch file with the following content.

@echo off
cmd /k cd "C:\your\file\path"

This will open a command window like what you tried to do.


For tons of info on windows commands check here: http://ss64.com/nt/

Solution 14 - Windows

Create a new file startCmdLine.bat in your directory and put this line in it

call cmd

That is it. Now double click on the .bat file. It works for me.

You can replace call with start, it will also work.

Solution 15 - Windows

this code works for me name it cmd.bat

@echo off
title This is Only A Test
echo.
:Loop
set /p the="%cd%"
%the%
echo.
goto loop

Solution 16 - Windows

you can try:

shift + right click

then, click on Open command prompt here

Solution 17 - Windows

Inside given folder click on the top Adddress Bar and type cmd and click enter It will open command prompt with current folder address.

Solution 18 - Windows

You can simply create a bat file in any convenient place and drop any file from the desired directory onto it. Haha. Code for this:

cmd

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionFrustratedWithFormsDesignerView Question on Stackoverflow
Solution 1 - WindowsChrisView Answer on Stackoverflow
Solution 2 - WindowsAlvin SIUView Answer on Stackoverflow
Solution 3 - WindowsJoeyView Answer on Stackoverflow
Solution 4 - Windowss-fView Answer on Stackoverflow
Solution 5 - WindowsDKnightView Answer on Stackoverflow
Solution 6 - WindowsChadView Answer on Stackoverflow
Solution 7 - WindowsandyhasitView Answer on Stackoverflow
Solution 8 - WindowsMichael KalyginView Answer on Stackoverflow
Solution 9 - WindowsDediqatedView Answer on Stackoverflow
Solution 10 - WindowsMr. NoddyView Answer on Stackoverflow
Solution 11 - WindowsmitView Answer on Stackoverflow
Solution 12 - WindowsPouria HematiView Answer on Stackoverflow
Solution 13 - WindowsTim HardenView Answer on Stackoverflow
Solution 14 - WindowsfilipView Answer on Stackoverflow
Solution 15 - WindowsViscarrView Answer on Stackoverflow
Solution 16 - WindowselifekizView Answer on Stackoverflow
Solution 17 - WindowscodemirrorView Answer on Stackoverflow
Solution 18 - WindowsGarricView Answer on Stackoverflow