%cd%与%~dp0

浅谈批处理中的%cd%与%~dp0

分类: 点滴积累2012-03-27 10:10 2364人阅读 评论(0) 收藏 举报

这两个变量都是用来表示当前目录,可使用时却大不相同,记录下

%cd%代表的是执行文件的当前目录,强调bat是在哪里启动的;->盘符展开后是可改变的

%~dp0代表的是bat文件所在的文件目录,强调bat的文件位置     ->盘符展开后是不可改变的

我们举个例子来说明会更直观些

我在桌面新建一个文件夹,里面创建一份bbb.bat文件,文件内容为

@echo off

echo cd = %cd%
echo dp0 = %~dp0

pause

exit
echo

然后在桌面创建一份aaa.bat文件,文件内容为

start "" "%cd%\新建文件夹\bbb.bat"

好,文件创建完毕,我们来看执行情况,分两种情况执行:

1、直接双击运行bbb.bat,我们看到

此时的cd与dp0指向是一样的,因为在新建文件夹启动,所以启动路径与文件所在目录一样

2、双击桌面的aaa.bat,我们看到

因为我们是通过在桌面的aaa.bat文件启动,所以此时的启动路径就指向了桌面,dp0还是与第一种情况一样

通过这两种情况,我们可以很明显看到cd可以不一样(取决于在哪里启动),但dp0都是一样的(不可改变)

若想知道%~dp0具体是什么意思,可参考

时间: 2024-10-13 18:21:43

%cd%与%~dp0的相关文章

DOS批处理中%cd%和%~dp0的区别

在DOS的批处理中,有时候需要知道当前的路径. 在DOS中,有两个环境变量可以跟当前路径有关,一个是%cd%, 一个是%~dp0. 这两个变量的用法和代表的内容是不同的. 1. %cd% 可以用在批处理文件中,也可以用在命令行中: 展开后,是驱动器盘符:+当前目录,如在dos窗口中进入c:\dir目录下面,  www.2cto.com 输入:echo %cd% ,则显示为:c:\dir . %cd%的内容是可以被改变的,其内容为命令的执行路径或批处理文件的执行路径. 2.%~dp0只可以用在批处

dos 批处理中%cd% 和%~dp0的区别

看网上介绍区别,写的好复杂,其实很简单: %cd%  在批处理和命令窗口都能使用.用于打印,当前工作路径. %~dp0% 则只能用于批处理中,用于获得当前批处理文件所在的路径. 做个试验试一下: @echo off echo this is %%cd%% %cd% echo this is %%~dp0 %~dp0 echo switch to another folder: cd d:\Program Files (x86) echo this is %%cd%% %cd% echo this

批处理,%~d0 cd %~dp0 代表什么意思

~dp0 "d"为Drive的缩写,即为驱动器,磁盘."p"为Path缩写,即为路径,目录cd是转到这个目录,不过我觉得cd /d %~dp0 还好些 选项语法: ~0         - 删除任何引号("),扩充 %0    %~f0        - 将 %0 扩充到一个完全合格的路径名("f"是file,即文件)    %~d0        - 仅将 %0 扩充到一个驱动器号    %~p0        - 仅将 %0 扩充到

TableML-GUI篇(Excel编译/解析工具)

项目情况 本文接上篇TableML Excel编译/解析工具,本文主要介绍GUI工具的使用,及配置项,如果你想了解此工具更加详细的说明,请阅读上篇文章. 项目地址:https://github.com/zhaoqingqing/TableML 项目介绍和更新日志 项目介绍 TableML, Table Markup Language, 基于电子表格的标记语言, 类似JSON, XML, INI,TableML可以作为软件项目的配置标记语言, 与之不同的是,您可以使用Excel等电子表格编辑软件来

使用批处理替换windows系统中的hosts文件

chcp 936 >nul@echo offmode con lines=30 cols=60%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exitcd /d "%~dp0":ma

MySQL绿色安装

@echo off echo 停止服务 net stop mysql echo 删除服务 sc delete mysql echo 安装mysql... cd /d %~dp0\bin mysqld.exe -install ping 127.1 -n 1 >nul ping 127.1 -n 1 >nul echo 初始化mysql... mysqld.exe --initialize EXIT @echo off echo 停止服务 taskkill /f /im mysqld.exe t

ANE 从入门到精通 --- 简单的Whatever

Flash还是很好的,不过国内没人用. Whatever了. 以下是ANE制作中的一点笔记 分享下 也留作备份 Step1 编写As3 Library package com.eran { import flash.external.ExtensionContext; import flash.system.Capabilities; public class WhateverNameAS { private static var mInstance:WhateverNameAS; public

JAVA “Run as administrator” “UAC disabled” alternative solution

Technorati 标签: psexec,run as administrator,UAC java.io.IOException: Cannot run program "psexec.exe": CreateProcess error=740, The requested operation requires elevation    at java.lang.ProcessBuilder.start(Unknown Source)    at java.lang.Runtime

MyBatis -generator应用

其实Mybatis-generator应用起来相当简单,尤其是在配好之后用起来更是神速啊. 首先下载mybatis-generator.jar包 下面是maven下载方式 <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version>