• 批处理文件的几种路径扩展


    前几天写了一个批处理小工具,本来我用着好好的,结果在QA那边用的时候出错了,一问才知道,他们不是在本机运行,而是在局域网的机器上运行的。一查才知道,原来是%cd%的问题。(%cd%代表当前文件夹,但如果运行批处理的路径是一个UNC路径,那么%cd%会被重定义为C:\Windows)

    也就是说,在含有UNC路径的时候,%cd%已经不再是当前文件夹。

    想起批处理中的几种路径扩展,于是忍不住来比了一把,批处理内容如下:

    @echo off

    cls

    echo %~0
    echo %~f0
    echo %~d0
    echo %~p0
    echo %~n0
    echo %~x0
    echo %~s0
    echo %~a0
    echo %~t0
    echo %~z0

    pause

    内容很简单,就是把几种扩展路径打印出来,0代表第一个输入参数,即批处理文件本身(test.bat),当然也可以是%~1,%~2等,这里1,2就代表第二、第三个输入参数

    在本地(C盘)运行,得到如下结果:

    现在,把test.bat放到局域网,得到如下结果:

    (图中抹去的部分是一个IP地址)

    可以看到,%~0和%~f0都是扩展到全路径的文件名,%~d0是扩展到根路径,%~p0是扩展到除去根路径的子路径名(不包括文件名),%~n0和%~x0分别扩展文件名和文件后缀名。还有s,a,t,z等扩展不是扩展路径,在此不多说,但从图上也很容易看出其作用。

    所以,根据上图来看,用%~dp0就可以在有UNC路径的情况下来表示当前文件夹。因此,推荐在批处理中都用%~dp0来表示当前文件夹,而不要用%cd%。

  • 相关阅读:
    C#实现汉字转换为拼音缩写的代码
    C# 使用xsd文件验证XML 格式是否正确
    C#用天气预报的WebServices
    c# socket通信较完善方案
    C#操作MySQL数据库-----HelloWorld
    c# 自己制作一个简单的项目倒计时器
    C# 制作外挂常用的API
    C#中如何计算时间差?
    C# 图片保存到数据库和从数据库读取图片并显示
    c#加密 可逆与不可逆MD5 加密
  • 原文地址:https://www.cnblogs.com/ini_always/p/2184475.html
Copyright © 2020-2023  润新知