问题:
我试图让用户从指定目录中选择哪个文件夹,然后将该文件夹添加到该地址,以便执行该目录中的程序。
例如,!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/