【问题标题】:Find USB Drive letter查找 USB 驱动器号
【发布时间】:2009-04-25 08:47:25
【问题描述】:

我需要获取 USB 笔式驱动器的驱动器号。命令 CHDIR >drive.txt 给了我驱动器号 L:。如何在我的变量中读取/获取此信息“L:”而不带引号批处理文件

【问题讨论】:

    标签: batch-file


    【解决方案1】:

    这是从任何驱动器获取 USB 驱动器号的方法。

    @echo off
    
    for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,description^,drivetype 
    
    2^>NUL`) do (
    
    if %%l equ 2 (
    echo %%i is a USB drive.
    )
    )
    

    【讨论】:

    • 这很有用;但是如果有一个(多)读卡器,它也会提到它们。
    【解决方案2】:

    chdir 的任何输出也可以由伪变量%CD% 使用。所以你已经有了一个包含该信息的变量。

    否则你可以使用for:

    for /f "delims=" %%x in ('chdir') do set "drive=%%x"
    

    但我认为%CD% 更容易:-)

    编辑:你已经用引号说了。变量中不会有任何引号,除非您希望它们在其中。

    至于尾随反斜杠:您可以使用以下内容代替%CD%

    %CD:~0,-1%
    

    这将扩展%CD% 并删除最后一个字符,你知道它是反斜杠。

    不过,仅当您位于该驱动器的根目录中时才有效。否则你也可以使用

    for %%x in (%cd%) do @set drive=%%~dx
    

    【讨论】:

    • %CD% 可以,类似于 chdir,但我需要删除反斜杠“\”,变量只能是“L:”,不带引号
    【解决方案3】:

    在你的批处理中使用类似的东西:

    set Drive=%cd:~0,2%
    

    如果这是脚本所在的当前目录,当你使用它时,会产生 L: 的内容。如果批处理中有一些 popd/pushd、cd 等,请在使用时小心。剩下的就看你自己了

    提供您将如何使用它(可能是您的批次的一部分)将有助于获得更好的答案。我们只能猜测。我认为,原因在于答案中有几个 for 循环。可能不需要,但我们正在猜测。

    【讨论】:

      【解决方案4】:
      for %%a in (d e f g h i j k l m n o p q r s t u v w x y z) do vol %%a: 2>nul |find "NAME OF THE USB" >nul && 
      set drv=%%a:
      %drv%
      

      这是我用来在我的 USB 上查找字母的工具

      • 只需将“USB 的名称”更改为 USB 的名称

      【讨论】:

        【解决方案5】:

        因为cd 会输出类似:

        c:\documents and settings\pax
        

        您只需要使用"\" 作为分隔符来获取第一个字段,如下所示:

        for /f "delims=\" %d in ('cd') do set curdrv=%d
        

        这会将环境变量 curdrv 设置为 c: 以用于上述输出。

        如果在 cmd 文件中运行,请不要忘记使用双 % (%%d) 变体。

        【讨论】:

          猜你喜欢
          • 2012-01-06
          • 1970-01-01
          • 2020-03-19
          • 1970-01-01
          • 2011-05-09
          • 1970-01-01
          • 1970-01-01
          • 2012-05-24
          • 1970-01-01
          相关资源
          最近更新 更多