我正在尝试让它滚动目录并在用户回复“ N”时显示一个新变量。除了如何转到下一个变量之外,我已经全部弄清楚了。
cd "C:\Test"
for /r %%F in (*) do SET Show=%%~NF
echo %Show%
echo.
SET /P Continue=Continue?(Y/N)
if /I "%Continue%" EQU "y" goto :Run
if /I "%Continue%" EQU "n" goto :Start
答案 0 :(得分:2)
如果您要滚动目录并提示用户文件名,并让他们选择或继续,那么波纹管应该可以为您提供帮助。
首先,我们可以使用dir /b /a:d
仅显示当前目录中的目录(文件夹)。通过使用代码块(
和)
,我们可以将批处理脚本放入for循环中。为了您的方便,我们可以使用CHOICE
命令来提示继续循环或将当前文件夹保存为字符串并对其进行处理。
ScrollTreeWithPrompt.bat:
@echo off
setlocal EnableDelayedExpansion
Rem | Configuration
Set "MainDir=C:\Test"
Rem | Get Each Project Folder
for /f "tokens=*" %%A in ('dir "!MainDir!\" /b /a:d') do (
Cls
Echo Current Folder: %%A
echo(
CHOICE /M "Continue?"
Rem | Check for "N" - If so Set String & goto
IF "!ERRORLEVEL!"=="2" (
Set "Choice=%%A"
GOTO Run
)
)
Rem | No Further Results
Cls
Echo Warning: No further folders found.
pause>NUL
goto :EOF
:Run
Cls
echo Currently selected: !MainDir!\!Choice!
pause>NUL
goto :EOF
我在脚本中留下了一些Rem
注释,以帮助您。有关命令的更多帮助,请在命令提示符下键入以下内容:
choice /?
set /?
for /?
goto /?
答案 1 :(得分:0)
这是您需要的吗?
For /R "C:\Test" %%A In (*) Do (Choice /M "%%~nA"
If Not ErrorLevel 2 (Set "Show=%%~nA" & GoTo Run))
Exit /B
:Run
Echo Running against %Show%
Pause
或者,如果您希望在使用文件名运行后返回循环,请使用Call
而不是GoTo
:
For /R "C:\Test" %%A In (*) Do (Choice /M "%%~nA"
If Not ErrorLevel 2 Call :Run "%%~nA")
Exit /B
:Run
Set "Show=%~1"
Echo Running against %Show%
Pause