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

Windows 批处理:如何滚动文件以读取变量?,windows,batch-file,variables,cmd,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 如果您希望滚动目录并提示用户文件名,并

我试图让它在目录中滚动,并在用户回答“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

如果您希望滚动目录并提示用户文件名,并让他们选择该文件名或继续,那么bellow应该会对您有所帮助

首先,我们可以使用
dir/b/a:d
仅显示当前目录中的目录(文件夹)。通过使用代码块
&
我们可以将批处理脚本放入for循环中。为了您的利益,我们可以使用
CHOICE
命令来提示继续循环,或者将当前文件夹保存为string并对其执行操作

ScrollTreeWithPrompt.bat:

@echo关闭
setlocal EnableDelayedExpansion
Rem |配置
设置“MainDir=C:\Test”
Rem |获取每个项目文件夹
对于('dir”!MainDir!\“/b/A:d')中的/f“tokens=*”%%A,请执行以下操作(
Cls
回显当前文件夹:%%A
回音(
选择/M“继续?”
Rem |检查“N”-如果是,设置字符串和转到
如果“!ERRORLEVEL!”==“2”(
设置“选项=%%A”
快跑
)
)
Rem |无进一步结果
Cls
回显警告:找不到其他文件夹。
暂停>NUL
后藤:EOF
:运行
Cls
echo当前选择:!MainDir!\!Choice!
暂停>NUL
后藤:EOF

我在脚本中留下了一些
Rem
注释来帮助您。有关命令的更多帮助,请在命令提示符中键入以下内容:

  • choice/?
  • 设置/?
  • 获取/?
  • goto/?

如果您希望滚动目录并提示用户文件名,并让他们选择该文件或继续,那么下面的内容将对您有所帮助

首先,我们可以使用
dir/b/a:d
仅显示当前目录中的目录(文件夹)我们可以将批处理脚本放入for循环中。出于您的考虑,我们可以使用
CHOICE
命令提示继续循环,或将当前文件夹保存为string并对其执行操作

ScrollTreeWithPrompt.bat:

@echo关闭
setlocal EnableDelayedExpansion
Rem |配置
设置“MainDir=C:\Test”
Rem |获取每个项目文件夹
对于('dir”!MainDir!\“/b/A:d')中的/f“tokens=*”%%A,请执行以下操作(
Cls
回显当前文件夹:%%A
回音(
选择/M“继续?”
Rem |检查“N”-如果是,设置字符串和转到
如果“!ERRORLEVEL!”==“2”(
设置“选项=%%A”
快跑
)
)
Rem |无进一步结果
Cls
回显警告:找不到其他文件夹。
暂停>NUL
后藤:EOF
:运行
Cls
echo当前选择:!MainDir!\!Choice!
暂停>NUL
后藤:EOF

我在脚本中留下了一些
Rem
注释来帮助您。有关命令的更多帮助,请在命令提示符中键入以下内容:

  • choice/?
  • 设置/?
  • 获取/?
  • goto/?
    • 这就是您需要的:

      对于/R“C:\Test”%%A In(*)Do(Choice/M“%%~nA”
      如果不是错误级别2(设置“Show=%%~nA”&GoTo Run))
      退出/B
      :运行
      针对%Show%运行的回显
      暂停
      
      或者,如果您希望在对文件名运行后返回循环,则使用
      Call
      而不是
      GoTo

      对于/R“C:\Test”%%A In(*)Do(Choice/M“%%~nA”
      如果不是错误级别2调用:运行“%%~nA”)
      退出/B
      :运行
      设置“Show=%~1”
      针对%Show%运行的回显
      暂停
      
      这就是您需要的:

      对于/R“C:\Test”%%A In(*)Do(Choice/M“%%~nA”
      如果不是错误级别2(设置“Show=%%~nA”&GoTo Run))
      退出/B
      :运行
      针对%Show%运行的回显
      暂停
      
      或者,如果您希望在对文件名运行后返回循环,则使用
      Call
      而不是
      GoTo

      对于/R“C:\Test”%%A In(*)Do(Choice/M“%%~nA”
      如果不是错误级别2调用:运行“%%~nA”)
      退出/B
      :运行
      设置“Show=%~1”
      针对%Show%运行的回显
      暂停
      
      你能解释一下
      滚动
      的意思吗?你到底想要什么?我不清楚。你能解释一下
      滚动
      的意思吗?你到底想要什么?我不清楚。