• 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> です。

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

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

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

  • 相关阅读:
    - viewDidLoad 和
    C#实现excel导入到sql server 2008(.net版)
    Windows PE 第十章 加载配置信息
    Windows PE第九章 线程局部存储
    Windows PE第九章 线程局部存储
    Windows PE 第八章 延迟加载导入表
    Windows PE 第八章 延迟加载导入表
    Windows PE资源表编程(枚举资源树)
    Windows PE资源表编程(枚举资源树)
    欺骗的艺术-读后总结
  • 原文地址:https://www.cnblogs.com/gekal/p/3217821.html
Copyright © 2020-2023  润新知