• 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 is %%~dp0 %~dp0 
    
    pause

    结果发现%cd% 是可以在脚本中通过cd 切换到别的目录的,打印的路径是动态的。

    事实上,应该注意的是,使用的场景多半不同,  cd 到不同的工作路径,是dos常用操作。而%cd%就是为了得到当前的工作路径而设置的。

    但是,另外一种常用的需求就是获取当前bat文件所在的路径,那这个路径就需要用%~dp0%。 这里有一点儿麻烦的情况就是bat1 再调用bat2, 到底获取的是哪个路径呢?

    做个试验,试一下便知道了:

    t1.bat:

    @echo off
    echo this is t1.bat
    echo %%~dp0%% get path: %~dp0% 
    cd D:learnBatcodes
    call t2.bat
    pause

    t2.bat: 

    echo this is t2.bat
    echo %%~dp0%% get path : %~dp0%
    pause

    t1在d盘根目录,t2.bat 在D:learnBatcodes。  执行t1.bat 执行结果是:

    可见,是以当前命令所在的文件路径为准的咯。

    注意,批处理想把变量名称本身, 要在外层在加一个%%。

  • 相关阅读:
    [Leetcode] Median of Two Sorted Arrays
    [Jobdu] 题目1463:招聘会
    [Leetcode] Merge Two Sorted Lists
    [Leetcode] Combinations
    [Leetcode] Populating Next Right Pointers in Each Node II
    [Leetcode] Insertion Sort List
    redis在Web中的使用
    设计模式:单例模式
    设计模式:基本法则
    设计模式:工厂模式
  • 原文地址:https://www.cnblogs.com/xiami303/p/4066919.html
Copyright © 2020-2023  润新知