


Detailed explanation of the difference between %cd% and %~dp0 in DOS batch processing
%cd% and %~dp0 can both be used to represent the current directory in batch processing under Windows, but their functions are different in different usage scenarios. The following article will give you a detailed introduction to the difference between %cd% and %~dp0 in DOS batch processing. Friends in need can refer to it.
Problem description
Suppose we want to call and execute batch processing b.bat
, in batch processing a.bat b.bat
needs to know the current location of b.bat
and execute run.exe
, as follows:
// directory structure // c: // -a.bat // -program // -b.bat // -run.exe // a.bat call "%cd%\program\b.bat" // b.bat "%cd%\run.exe"
So can run.exe
be executed successfully now?
Problem Analysis
##%cd% and
%~dp0 can be used to represent the current directory. However, their functions are different in different usage scenarios:
%cd%
represents the current working directory (variable);
%~dp0
represents the complete directory where the current batch file is located (the batch file's directory, fixed).
// directory structure // c: // -c.bat // -program // -d.bat // c.bat call "%cd%\program\d.bat" // d.bat @echo off echo cd = %cd% echo dp0 = %~dp0
d.bat , the result is
cd = C:\program dp0 = C:\program\
c.bat, the result is
cd = C:\ dp0 = C:\program\
- When executing
d.bat
, the current working directory is
d.bat The directory whereis located;
- When executing
c.bat
, the current working directory is the directory where
c.batis located, even when calling # After ##d.bat
, the working directory is still the directory wherec.bat
is located.
Let’s take a look at the problem mentioned in the problem description-whether it can be executed successfully
? The answer is: No. "
" means "C:\run.exe
", not "C:\program\run.exe
" . So how to change it? There are two solutions:
// plan A // change the current working directory // a.bat cd "%~dp0" call "%cd%\program\b.bat" // b.bat cd "%~dp0" "%cd%\run.exe" // plan B // using %~dp0 directly // a.bat call "%~dp0program\b.bat" // b.bat "%~dp0run.exe"
The above solution Plan A in the solution solves this problem by changing the current directory. However, there is another problem here. Let us look at the following example:
// directory structure // c: // -program // -f.bat // d: // -e.bat // plan A // change the current working directory // e.bat cd "%~dp0" call "c:\program\f.bat" // f.bat cd "%~dp0" "%cd%\run.exe"
Now
e.bat and f.bat
are no longer in the same drive letter. Switch the current working directory from e.bat
to f.bat
directly. It is not possible to use CD, you must use:
cd /d "%~dp0"
This is an easy place to overlook, remember not to make a mistake.
Summary of the problem
Let’s reiterate the difference between
and %cd%
, %cd%
and %~dp0
can both be used to represent the current directory, but their functions are different in different usage scenarios:
- %cd%
represents the current working directory (variable);
- %~dp0
represents the current The complete directory where the batch file is located (the batch file's directory, fixed).
Judging from our current usage, try to use
. It is not recommended to use %cd%
, unless there are other needs. . For more detailed explanations of the differences between %cd% and %~dp0 in DOS batch processing, please pay attention to the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Solution to permission issues when viewing Python version in Linux terminal When you try to view Python version in Linux terminal, enter python...

When using Python's pandas library, how to copy whole columns between two DataFrames with different structures is a common problem. Suppose we have two Dats...

How to teach computer novice programming basics within 10 hours? If you only have 10 hours to teach computer novice some programming knowledge, what would you choose to teach...

How does Uvicorn continuously listen for HTTP requests? Uvicorn is a lightweight web server based on ASGI. One of its core functions is to listen for HTTP requests and proceed...

In Python, how to dynamically create an object through a string and call its methods? This is a common programming requirement, especially if it needs to be configured or run...

How to avoid being detected when using FiddlerEverywhere for man-in-the-middle readings When you use FiddlerEverywhere...

The article discusses popular Python libraries like NumPy, Pandas, Matplotlib, Scikit-learn, TensorFlow, Django, Flask, and Requests, detailing their uses in scientific computing, data analysis, visualization, machine learning, web development, and H

Regular expressions are powerful tools for pattern matching and text manipulation in programming, enhancing efficiency in text processing across various applications.
