【问题标题】:How to use batch parameter modifiers on a variable rather than a parameter如何在变量而不是参数上使用批处理参数修饰符
【发布时间】:2011-03-08 05:19:32
【问题描述】:

语法 %~f1 将表示文件名的参数修改为其完全限定的路径。有没有办法为批处理脚本中定义的变量获取该功能,而不仅仅是参数值?

例如,如果用户提供命令行参数“test.txt”,则以下脚本有效:
echo 限定文件名:%~f1

但是,如果我尝试使用变量而不是参数来做同样的事情,我怎样才能获得相同的功能?此尝试是无效的语法并且不起作用:
设置 unqualifiedFilename="test.txt"
echo 限定文件名:%~funqualifiedFilename

【问题讨论】:

    标签: parameters batch-file


    【解决方案1】:

    我能想到的最简单的方法就是使用FOR 命令。

    示例批处理脚本:

    @echo off
    setlocal
    set FileName=test.cmd
    
    for %%i in (%FileName%) do set FullPath=%%~fi
    
    echo Original param was '%FileName%'; full path is '%FullPath%'
    

    示例输出:

    原始参数是'test.cmd';完整路径是 'C:\test.cmd'

    【讨论】:

      【解决方案2】:

      第二种方法是调用函数并使用 %1 ... %n 参数

      @echo off
      set FileName=test.cmd
      call :GetFullPath %FileName%
      
      echo Original param was '%FileName%'; full path is '%FullPath%'
      goto :eof
      
      :GetFullPath
      set "FullPath=%~f1"
      goto :eof
      

      【讨论】:

        猜你喜欢
        • 2014-02-04
        • 2017-04-02
        • 2010-12-02
        • 2018-11-19
        • 1970-01-01
        • 1970-01-01
        • 2016-01-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多