【问题标题】:Open a folder using User input in CMD使用 CMD 中的用户输入打开文件夹
【发布时间】:2018-01-16 11:01:59
【问题描述】:

在我的办公室,我们必须定期同时打开许多不同的工作文件夹。我想知道是否有一个脚本可以允许用户在 CMD 中输入文件夹名称,该脚本将搜索网络驱动器上的指定目录以在资源管理器中打开该文件夹。

文件夹结构示例如下:

G/Work_A/2017:

  • 文件夹_A
  • 文件夹_B
  • 文件夹_C
  • 文件夹_D

G/Work_A/2018:

  • 文件夹_E
  • 文件夹_F
  • 文件夹_G
  • 文件夹_H

(我想同时搜索 2017 年和 2018 年的文件夹)

此外,用户输入的所有文件夹都有唯一的名称。

感谢您的帮助!

【问题讨论】:

    标签: windows batch-file cmd


    【解决方案1】:

    有点不清楚你想要什么,因此为什么我和@npocmaka 的答案有点不同:)

    无论如何,这将提示用户输入文件夹名称,然后搜索该文件夹并打开 G:\ 上的文件夹或文件夹的所有实例,它可以修改为也执行所有驱动器或仅限于特定目录.

    突出的一点是您说每个文件夹都是唯一的,这意味着每个文件夹在G:\ 上应该只存在一次,所以第一个场景应该有效。

    @echo off
    set /p promptfolder="Please type the folder you wish to open: "
    for /R G:\ %%f in (%promptfolder%) do @IF EXIST %%f explorer.exe "%%f"
    

    如果您想明确地将其限制为仅 2017 / 2018 目录:

    @echo off
    set /p promptfolder="Please type the folder you wish to open: "
    for /R G:\Work_A\2017 %%f in (%promptfolder%) do @IF EXIST %%f explorer.exe "%%f"
    for /R G:\Work_A\2018 %%f in (%promptfolder%) do @IF EXIST %%f explorer.exe "%%f"
    

    要将其添加为循环,保持批处理打开纯粹使用goto

    @echo off
    :start
    cls
    echo Last folder requested: %promptfolder%
    set /p promptfolder="Please type the folder you wish to open: "
    for /R G:\Work_A\2017 %%f in (%promptfolder%) do @IF EXIST %%f explorer.exe "%%f"
    for /R G:\Work_A\2018 %%f in (%promptfolder%) do @IF EXIST %%f explorer.exe "%%f"
    cls
    goto start
    

    【讨论】:

    • 感谢您的回复!即使在用户完成搜索后,有什么办法让 CMD 保持打开状态以继续提示输入文件夹名称?另外,当用户输入部分文件名而不是全部内容时,我如何修改搜索以包括在内?
    • @crazy.Proj.mgr 是的,脚本可以修改回环,我会编辑的。
    • @crazy.Proj.mgr 查看编辑后的底部解决方案。通配符搜索可以搜索文件的一部分,但您可能会导致混乱,如果用户输入A 以进行参数,它将打开您正在搜索的根目录中具有上位@ 的任何目录987654328@ 或更低的a,这将很快杀死处理器和内存。
    • 啊,我明白了.. 为文件名通配符搜索设置最小字母数怎么样?
    • @crazy.Proj.mgr 是的,但是,那不在原始问题的范围内:)
    【解决方案2】:

    我不确定你到底想要什么,但你可以试试这个:

    @echo off
    echo --Choose folder to open--
    
    echo G:\Work_A\2017
    (echo()
    dir /b /a:d G:\Work_A\2017\
    echo G:\Work_A\2018\
    (echo()
    dir /b /a:d G:\Work_A\2018\
    
    set /p "year=Year(2018/2017):"
    set /p "folder=Folder:"
    
    if exist "G:\Work_A\%year%\%folder%\" (
      explorer "G:\Work_A\%year%\%folder%\"
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-22
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      • 1970-01-01
      • 2020-12-06
      相关资源
      最近更新 更多