我已经搜索并搜索以找到解决(感觉如何)一个独特问题的方法。这里的许多答案都非常有帮助,并且让我走了很长一段路,但最后一点让我很难过。
- 我的批处理文件需要在具有变量名的文件夹中打开可执行文件
- 此文件夹可能位于两个目录之一中
这是我最初拥有的并且有效
@ECHO OFF SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION SET DIR1="%USERPROFILE%\AppData\Local\Application Workspace\Profiles" SET DIR2=C:\Application\SRW\Profiles IF NOT EXIST %DIR1% ( GOTO PROFILE_2 ) ELSE ( GOTO PROFILE_1 ) :PROFILE_1 for /f "delims=" %%A in ('dir %DIR1% /ad /b') do ( set foldername=%%~nxA ) SET DIR1=%DIR1:"=% SET DIR=%DIR1%\%foldername%\app.exe GOTO START_APP :PROFILE_2 for /f "delims=" %%A in ('dir %DIR2% /ad /b') do ( set foldername=%%~nxA ) SET DIR=%DIR2%\%foldername%\app.exe GOTO START_APP :START_APP START "" /b "%DIR%" :EOF ENDLOCAL EXIT
然后,当我发现某些用户可能在变量配置文件文件夹中有多个配置文件并且他们需要能够选择哪个配置文件用于该给定任务时,我被抛出了一个曲线球。现在我有一个变量配置文件文件夹和该文件夹中的一个或多个变量配置文件。
我找到了列出文件夹名称并将它们显示在命令窗口中以供选择的代码。
@echo off
cls
setlocal EnableDelayedExpansion
set /a count=0
for /d %%d in (*) do (
set /a count+=1
@echo !count!. %%d
)
setlocal DisableDelayedExpansion
set /P selection="select folder number:"
我还发现这个例程允许用户从列表中选择一个文件,然后它应该将该文件名转换为一个变量。
批处理脚本编程——如何允许用户从文件夹中的文件列表中按编号选择文件?
不幸的是,我无法让链接中的示例按原样工作,而且我不知道如何使其与文件夹名称一起工作,因为文件夹名称示例和文件名示例很接近但不够接近,我无法理解该怎么做. 即使它以某种方式确实可以工作,那么我怎样才能在上面发布的原始代码中进行这样的例程工作呢?
另外,如果只有一个文件夹,我真的不希望用户被迫选择文件夹。如果仅存在一个文件夹,则应自动将其放入文件夹名称变量中,并且根本不会向用户显示任何内容。
我正在尝试做的事情甚至可能吗?
非常感谢任何帮助。