批处理bat命令 获取当前盘符和当前目录和上级目录的代码

批处理命令获取当前盘符和当前目录

当前盘符:%~d0
当前路径:%cd%
当前执行命令行:%0
当前bat文件路径:%~dp0
当前bat文件短路径:%~sdp0

测试

echo 当前盘符:%~d0
echo 当前路径:%cd%
echo 当前执行命令行:%0
echo 当前bat文件路径:%~dp0
echo 当前bat文件短路径:%~sdp0

效果如下图所示

可以用echo %cd%进行打印测试

windows 的快捷方式不能使用相对路径。可以用批处理文件获取相对路径。
set pa=%cd% 将当前路径赋值给pa
echo %pa% 显示pa变量

以下例子是命令行编译Visual Studio编写的程序:

@echo off
set b=%cd% //将当前目录保存到参数b中,等号前后不要有空格
C:
cd program files
cd microsoft visual studio
cd common
cd msdev98
cd bin
msdev "%b%\test.dsp" /MAKE "test- Win32 Release" /REBUILD //(VC6.0)
devenv "%b%\Tool Utility\Tool Utility.sln" /REBUILD //(VS2010)
pause

注意:如果路径中包含空格,则应该将路径加文件名用双引号括起来。

废话不多说,直接看例子:

@echo off
echo 当前盘符:%~d0
echo 当前盘符和路径:%~dp0
echo 当前盘符和路径的短文件名格式:%~sdp0
echo 当前批处理全路径:%~f0
echo 当前CMD默认目录:%cd%
pause

通过批处理取当前目录的上一级目录

@echo off
if %cd%==%cd:~,3% echo 当前目录已经是%cd:~,1%盘的根目录!&goto end
cd..
set "bd=%cd%"
cd..
set "bbd=%cd%"
if "%bbd%"=="%bd%" (echo 上一级目录是: %cd:~,1%盘的根目录!
) else call echo 上一级目录是: "%%bd:%bbd%\=%%"
:end
pause

P.S.
上面的程序我运行并测试,分别在第一级目录,第二级目录,第三级目录,第四级目录,都执行,程序的最终结果不太正确,这里只给你个思路,以及对各级目录的获取方法仅供参考。

我们小编以前用的一个bat,方便删除文件夹里面的说明与复制自己的说明

@echo off
setlocal EnableDelayedExpansion
del jb51.txt /s
del 说明.htm /s
copy F:\编辑\jb51tools\jb_down\book\ %cd%
mkdir jb51.net
del %0 | move *.* jb51.net

代码比较简单啊,不懂的自行百度一下

(0)

相关推荐

  • 批处理获取IP生成TXT文本的bat代码

    第一种方法: 复制代码 代码如下: @echo off <"%~f0" more +5 >tmp.vbs cscript //NoLogo /e:vbscript tmp.vbs %1>ip.txt echo >nul && del tmp.vbs goto:eof set oDOM = WScript.GetObject("http://www.duosc.com/ip.aspx") do until oDOM.readyS

  • 批处理获取网卡名称的代码(附修改IP、网关、DNS脚本)

    复制代码 代码如下: ::用ipconfig /all命令获取网卡名称. FOR /F "tokens=2*" %%i IN ('ipconfig/all^|find /i "Ethernet adapter "') DO set name=%%j ::用for命令删除网卡名称后面的冒号. FOR /F "tokens=1* delims=:" %%i in ("%name%") do set 网卡名称=%%i 套用上面的脚本

  • 批处理获取文件夹下面txt文件行数并添加到文件名后

    方法一: @echo off&setlocal enabledelayedexpansion for /f "delims=" %%a in ('dir /a-d/b/s *.txt') do ( for /f "tokens=3 delims=:" %%b in ('find /c /v "" "%%a"') do set n=%%b ren "%%a" "%%~na_!n: =!%%~

  • 批处理(bat)实现全盘搜索指定文件获取其完整路径方法大全

    废话不多说,直接上代码,额,想用的话,自己保存成bat文件即可. [方案一]for /f + dir @echo off rem 指定待搜索的文件 set "FileName=BatHome_Batcher.txt" echo 正在搜索,请稍候... for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do ( if exist %%a:\ ( for /f "delims=" %%b in ('

  • 获取外网IP地址的批处理代码

    复制代码 代码如下: ::========================================== :: IP.bat :: v0.1 :: jinminghou.cn@2009-12-22 ::========================================== @echo off title GetIP set ip=unknown echo On Error Resume Next:Set oDOM=WScript.GetObject("http://www.j

  • 批处理bat命令 获取当前盘符和当前目录和上级目录的代码

    批处理命令获取当前盘符和当前目录 当前盘符:%~d0 当前路径:%cd% 当前执行命令行:%0 当前bat文件路径:%~dp0 当前bat文件短路径:%~sdp0 测试 echo 当前盘符:%~d0 echo 当前路径:%cd% echo 当前执行命令行:%0 echo 当前bat文件路径:%~dp0 echo 当前bat文件短路径:%~sdp0 效果如下图所示 可以用echo %cd%进行打印测试 windows 的快捷方式不能使用相对路径.可以用批处理文件获取相对路径. set pa=%cd

  • 批处理(bat)命令学习的一些总结

    一.set 篇: 1.set(无开关) set .=test set. ::若一个变量以:\.这三个与路径相关的符号开头,用set查看以该字符打头的变量时可以省去一个空格. echo %tmp:*\=% ::显示tmp变量第一个\之后的部分,其余变量替换与变量偏移太简单不解释 2.set /p 变量名=注释<设备名 当设备名为文件时,因为文件中换行符与回车符伴生,所以只取文件第一行作为var变量的内容,但是不超过1024字节:而当设备名为nul或者com3时,只显示不换行的注释,这种情况下可以省

  • C#检测移动硬盘并获取移动硬盘盘符的方法

    网上找了很久关于C#检测移动硬盘并获取盘符的代码但没能找到,所以只能自己解决了 C#获取所有硬盘 var arr = DriveInfo.GetDrives(); 得出的所有磁盘,发现对于移动硬盘,DriveType 不是 Removable 类型,而是 Fixed 枚举类型. C#检测移动硬盘,网上找了很久,没有现成正确的代码,只有自己想办法了. 代码如下: public static List<string> GetListDisk() { List<string> lstDi

  • 批处理bat标准化获取当前系统日期的几种方法

    操作系统不同,日期格式也可能不同: 星期二 2008-07-29 2008-07-29 星期二 07/29/2008 Tue Tue 07/29/2008 再考虑到中.英之外的其它语言的操作系统,日期格式的种类实在太多了. 要想标准化地获取当前系统日期2008-07-28,直接截取%date%变量的方法是不行的. [方案一]BAT + REG @echo off rem 无法保证在中.英之外的其它语言的操作系统上得到正确结果 for /f "delims=" %%a in ('reg

  • C#的path.GetFullPath 获取上级目录实现方法

    本文实例讲述了C#的path.GetFullPath 获取上级目录实现方法,分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: string path = new directoryinfo("../").fullname;//当前应用程序路径的上级目录 获取当前目录可以使用 复制代码 代码如下: appdomain.currentdomain.basedirectory 获取当前目录的上级目录 复制代码 代码如下: path.getfullpath("..&qu

  • jsp编程获取当前目录下的文件和目录及windows盘符的方法

    本文实例讲述了jsp编程获取当前目录下的文件和目录及windows盘符的方法.分享给大家供大家参考,具体如下: (一)获取当前目录下的文件和目录 知识点 1 file对象的应用 2 listFiles()方法 3 isDirectory()方法,isFile()方法 判断是否为目录或是文件 4转换字符串方法toString (1)创建一个file对象dir, 然后用listFiles()方法返回当前目录下所有文件 String path=request.getRealPath("/")

  • gulp加批处理(.bat)实现ng多应用一键自动化构建

    批处理 常用常见的批处理文件有.bat文件,可用文本编辑器直接编辑内部代码,运行也比较方便,windows平台直接双击执行即可,具体请自行了解. 需求背景 angular项目中,当项目越来越大时,很多通用模块(module)可能需要抽象出来,这是一点,另外可能有某些子应用也会单独抽离出来,这是另一点. 当一个大型项目同时包括多个子应用时,编码后的编译或者打包就会比较麻烦,特别是在项目持续集成的一种状态下,或者项目组有新成员(经验稍微薄弱)情况下. 需要了解 看下面的代码之前,如果您是angula

  • 自动清除电脑垃圾及删除windows默认共享盘符的批处理bat

    by:zuifeng258Windows在默认情况下几个盘多是共享的,它们是隐藏的危险. 在dos下用命令"net share"可以查看... 不能截图,就只能打打字了 复制代码 代码如下: @echo off echo 正在自动删除admin$管理共享和ipc$管道共享, net share admin$ /del net share IPC$ /del net share C$ /del net share D$ /del net share E$ /del net share F

  • 用批处理实现映射盘网络盘为固定盘符,请更改冲突的硬盘盘符

    以前在CSDN上提交的FAQ,不能通过搜索引擎来搜索CSDN的FAQ,找了好一会才找到.现CSDN的FAQ只有CSDN用户才能正常访问,固转到BLOG. http://faq.csdn.net/FAQUnfurl.aspx?id=216232 Q:现有50台电脑需要映射一网络驱动,网络映射盘必须为F盘.问题是目前有部分电脑已有本地F盘,需要把本地的F盘的盘符更换成J后,再映射网络驱动到F盘.由于电脑多,故想用批处理文件解决. A:---------------------------------

  • 批处理BAT脚本中set命令的使用详解(批处理之家Batcher)

    目录 一.使用 set 命令进行赋值 1.等号两边不要有空格 2.变量值包含特殊字符需用双引号 3.避免使用系统环境变量同名的自定义变量 4.语法可行但不推荐使用 二.使用 set /p 命令读取输入 三.使用 set /a 命令进行数学运算(1) 四.使用 set /a 命令进行数学运算(2) 五.使用 set 命令进行字符串截取 六.使用 set 命令进行字符串替换 七.set命令知识点(1)把命令结果赋值给变量 八.set命令知识点(2)显示以某字符开头的变量 一.使用 set 命令进行赋

随机推荐