批量获取目录路径的姓氏

时间:2017-03-15 17:42:06

标签: windows batch-file windows-7

我的任务是为我的公司编写安装脚本,以便能够在用户计算机上安装打印机驱动程序。

到目前为止我所做的是我已经让脚本接受一个参数(打印机类型兄弟,xerox等等),从那里它将收集驱动程序的相对路径,并运行{{输出所有驱动程序的路径上的命令,之后它将要求用户将正确的驱动程序从网络驱动器复制到用户桌面,然后运行它。

我需要做的是运行部分,我需要将驱动程序复制到桌面并以某种方式获取最后一个目录部分(例如:forfiles我需要收集最后一部分user\desktop\test.exe)我怎样才能以功能的方式做到这一点?

基本上我需要将路径拆分为test.exe并抓住该列表的最后一个条目,这是否可以批量生效?

\

1 个答案:

答案 0 :(得分:1)

要获取文件或目录路径的最后一个元素,您可以:

  1. 使用for loop及其~修饰符:

    set "ITEM=user\desktop\test.exe"
    for %%I in ("%ITEM%") do set "NAME=%%~nxI"
    echo %NAME%
    
  2. 或通过call command调用子例程,将路径作为参数传递并再次使用~修饰符:

    set "ITEM=user\desktop\test.exe"
    call :SUB "%ITEM%"
    goto :EOF
    
    :SUB
    set "NAME=%~nx1"
    goto :EOF
    
  3. 对于这两种变体,~nx部分从引用中存储的路径的最后一个元素中提取基本名称(n)和扩展名(x){{1 }或%%I)。在命令提示符窗口中键入%1for /?并阅读帮助文本;您将分别找到call /?变量引用和参数引用的所有可能的~修饰符。