批处理:如何滚动浏览文件以读取变量?

时间:2019-01-28 02:31:11

标签: windows batch-file variables cmd

我正在尝试让它滚动目录并在用户回复“ 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

2 个答案:

答案 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