zoukankan      html  css  js  c++  java
  • DOS批处理命令-引数取得

    参数传递对程序来说,是一个很重要的事情,所以,获得传递的参数是很重要的,接下来,我们来探讨下获得传递的参数的N种方式。

    1、%N  获得传递的第N个参数(N最大为9)

    就是传递过去的参数原样值(并且忽略前后导空格)

    @echo off
    echo %1

    运行结果为(a.bat canshu)

    canshu

    2、%~1  也就是说,把第一个参数的引用字符串给去掉(两段的引号),如果只有一侧有的话,就删除有的那一侧。

    すべての引用句 (") を削除して、%1 を展開します。

    例如:

    "1"2"➡1"2    "1"2➡1"2    1"2"➡1"2    1"2➡1"2

    @echo off
    
    echo %~1

    运行结果:

    F: mp>a.bat "1"2"
    1"2

    3、%~f1   获取参数1指定的路径的全路径/如果是只指定文件名的话,就是当前路径 + 参数1表示的全路径名

    %1 を完全修飾パス名に展開します。

    例如参数1是C:Usersliuhongying mp est.txt的时候,结果就是C:Usersliuhongying mp est.txt

    例如当前路径是F: mp,传递的参数是1234,那么,得到的结果就是F: mp1234

    @echo off
    
    echo %~f1

    运行结果:

    F: mp>a.bat C:Usersliuhongying mp est.txt
    C:Usersliuhongying mp est.txt

    F: mp>a.bat 1234
    F: mp1234

    那如果没有参数1的时候呢?输入结果是什么呢?然我们来看看

    F: mp>a.bat
    ECHO は <OFF> です。

    也就是说,如果这个参数本身就不存在的时候,取得的东西就是空的了。

    4、%~d1   获取参数1指定的路径的盘符名/如果只指定文件名,那么结果就是当前路径的盘符名

    %1 をドライブ文字だけに展開します。

    例如参数1是C:Usersliuhongying mp est.txt的时候,结果就是C:

    例如当前路径是F: mp,那么得到的结果就是F:

    @echo off
    
    echo %~d1

    运行结果:

    F: mp>a.bat C:Usersliuhongying mp est.txt
    C:

    F: mp>a.bat 1234
    F:

    那如果没有参数1的时候呢?输入结果是什么呢?然我们来看看

    F: mp>a.bat
    ECHO は <OFF> です。

    也就是说,如果这个参数本身就不存在的时候,取得的东西就是空的了。

    5、%~p1  获取参数1指定的路径的路径名/如果只指定文件名,那么结果就是当前文件的路径名

     %1 をパスだけに展開します。

    例如参数1是C:Usersliuhongying mp est.txt的时候,结果就是Usersliuhongying mp

    例如当前路径是F: mp,那么得到的结果就是 mp

    @echo off
    
    echo %~p1

    运行结果为:

    F: mp>a.bat C:Usersliuhongying mp est.txt
    Usersliuhongying mp

    F: mp>a.bat 1234
    mp

    那如果没有参数1的时候呢?输入结果是什么呢?然我们来看看

    F: mp>a.bat
    ECHO は <OFF> です。

    也就是说,如果这个参数本身就不存在的时候,取得的东西就是空的了。

    6、%~n1    获取参数1指定的路径的文件名/如果只指定文件名,那么结果就是这个文件名

    %1 をファイル名だけに展開します。

    例如参数1是C:Usersliuhongying mp est.txt,那么路径的文件名是test

    @echo off
    
    echo %~n1

    运行结果:

    F: mp>a.bat C:Usersliuhongying mp est.txt
    test

    F: mp>a.bat test.txt
    test

    7、%~x1  就是表示文件的扩展名(包括分隔符的句点)

    %1 をファイル拡張子だけに展開します。

    @echo off
    
    echo %~x1

    运行结果

    F: mp>a.bat C:Usersliuhongying mp est.txt
    .txt

    F: mp>a.bat test.txt
    .txt

    8、%~s1 获取指定路径的短路径

    展開されたパスは、短い名前だけを含みます。

    什么短路径呢?短路径就是使用一种命名规范来缩短表示路径的长度。

    短路径名实在DOS下的命名规则
    在DOS中,主文件名的长度不能超过8个字符
    如果超过了8个 系统自动截取前6个字符,然后加上~1
    如果前6个字符一样了,那么路径名就按照字符串排序,然后就依次使用~2,~3

    例如路径名为C:Usersliuhongying mp est.txt短路径就是C:UsersLIUHON~1 mp est.txt

    @echo off
    
    echo %~s1

    运行结果

    F: mp>a.bat C:Usersliuhongying mp esttesttest.txt
    C:UsersLIUHON~1 mp esttesttest.txt

    由此看来,短路径只是缩短路径部分。

    9、%~a1 获取参数1指定的文件的属性(如果文件不存在,结果就是空的)

    %1 をファイル属性に展開します。

    @echo off
    
    echo %~a1

    运行结果

    F: mp>a.bat C:Usersliuhongying mp est.txt
    --a--------

    *这里a代表的是存档文件属性,具体还有什么别的,在那个位置,如果以后有用到在总结吧。

    10、%~t1  获得文件的更新日期和时间

    %1 をファイルの日付/時刻に展開します。

    @echo off
    
    echo %~t1

    运行结果

    F: mp>a.bat C:Usersliuhongying mp est.txt
    2013/07/27 01:38

    11、%~z1  获得参数1指定文件的大小(byte数)

    %1 をファイルのサイズに展開します。

    @echo off
    
    echo %~z1

    运行结果

    F: mp>a.bat C:Usersliuhongying mp est.txt
    17

    12、%~$PATH:1   在path指定的路径中检索参数1指定的文件,如果找到了就返回全路径,否则,就返回空。

    @echo off
    set PATH=C:Usersliuhongying	mp
    echo %~$PATH:1

    执行结果

    F: mp>a.bat test.txt
    C:Usersliuhongying mp est.txt

    @echo off
    set PATH=C:Usersliuhongying
    echo %~$PATH:1

    执行结果

    F: mp>a.bat tmp est.txt
    C:Usersliuhongying mp est.txt

    由此可见,即path + 参数1拼成的字符串指定的文件如果存在,就返回该全路径。

    F: mp>a.bat test.txt
    ECHO は <OFF> です。

    由以上运行结果可以看出,检索不包括下层目录。可以进一步验证上一个验证结果。

    获取参数值的地方已经分析完了。

    不过,这些方法可以有很多种组合方式。进一步的应用就要看你使用的灵活性了。

  • 相关阅读:
    Python 集合
    Python sorted()
    CodeForces 508C Anya and Ghosts
    CodeForces 496B Secret Combination
    CodeForces 483B Friends and Presents
    CodeForces 490C Hacking Cypher
    CodeForces 483C Diverse Permutation
    CodeForces 478C Table Decorations
    CodeForces 454C Little Pony and Expected Maximum
    CodeForces 313C Ilya and Matrix
  • 原文地址:https://www.cnblogs.com/gekal/p/3217821.html
Copyright © 2011-2022 走看看