batch-file - 提示用户在批处理文件中选择目录

标签 batch-file for-loop scripting directory user-input

问题:

我试图让用户从指定目录中选择哪个文件夹,然后将该文件夹添加到该地址,以便执行该目录中的程序。

例如,!acct! 是我用来询问最终用户他们想要访问哪个帐户的变量。此帐户是所有其他文件夹的起始文件夹或根文件夹。除文件夹的第二个 token 外,所有帐户的文件夹结构均保持不变。即)123456789\*\program\setup\

* 是存在多个文件夹的文件夹,我希望最终用户从中进行选择。

一旦选择,我希望脚本添加该目录,以便可以执行程序。

我认为通过设置变量 acctDir=C:\Users\jdoe\Desktop\!acct!\ 可以让我添加根目录的 acct 编号,然后运行 ​​ FOR 循环允许我在集合中使用通配符 for/d %%i in ( !acctdir!*media1\setup ) do ( start !app! )

任何帮助将不胜感激!

@echo off
setlocal enabledelayedexpansion

:beginning
echo.
echo.
echo ===========================================================
echo Starting on !date! !time! on !Computername!
echo ===========================================================
echo.

goto :main


:main
setlocal

    set /P acct=Please type the 9 digit account number you would like to restore: 
    set acctDir=C:\Users\jdoe\Desktop\!acct!\
    set app=setup.exe /cd
    set log=c:\logs.txt


    echo. Starting on !date! !time! on !Computername! >> !log!
    echo.
    echo The account number you selected is: !acct!
    echo.

    goto :user

:user

    set /p answer=Is this correct (Y/N)? 
    echo.

    if /i !answer!==y goto :yes (
    ) else ( 
        echo.
        echo Ok. Let's try again^^!
        echo.
        Pause
        cls
        goto :beginning
        )
    )

:yes

    for /d %%i in ( !acctdir!*media1\setup ) do (
        start !app!
    )

endlocal
goto :eof

最佳答案

您可以尝试如下操作:

set c=0
For /f %%a in ('dir !acctDir! /B /A D') do (
    set /a c+=1
    echo !c!    %%a
    set dir!c!=%%a
)

echo. 
set /p uin="Select a directory [1-!c!]: "
set udir=!dir%uin%!

echo Selected - %udir%

这将循环遍历 !acctDir! 的目录列表,并提示用户根据分配给它的编号选择一个目录。

!acctDir!\%udir% 将成为目录的位置。

关于batch-file - 提示用户在批处理文件中选择目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21395980/

相关文章:

windows - .bat 文件中的管道分隔符

R:我的数据框有 2 列,每行都有一串数字,有没有办法拆分字符串并添加每列的值?

windows - 使用 Progress 在 Windows 命令行上复制文件

linux - 如何在 bash 中回显包含任何内容的字符串?

javascript - C++ 使用批处理脚本清除所有浏览器 cookie

linux - 有没有办法重命名硬盘中的多个文件?

python - 在 For 循环中从 Windows 批处理文件中的数组访问项目

python - 将元素追加到列表并从另一个列表中删除

arrays - JS 如何在数组中查找字符串中最长的单词

powershell - 使用 powershell 删除 .csv 文件中的最后一行