gpt4 book ai didi

arrays - DIR 输出到 BAT 阵列?

转载 作者:行者123 更新时间:2023-12-04 21:53:32 25 4
gpt4 key购买 nike

有没有办法将“dir”命令的输出读入 BAT 文件中的数组?或者我需要先将它输出到一个文件,然后读取该文件并在之后删除该文件?

目的是获取目录中的文件夹列表,为每个文件夹附加一个数字,然后提示用户输入数字以选择文件夹。

更新:明白了!

SETLOCAL EnableDelayedExpansion
SET /A c=1

FOR /F "tokens=*" %%F in ('dir /on /b /a:d /p %svnLOCAL%') DO (
ECHO !c!. %%F
SET dir_!c!=%%F
SET /a c=c+1
)

REM test array
ECHO !dir_4!
ENDLOCAL

最佳答案

Batch 不正式支持数组,但您可以使用环境变量模拟数组。

@echo off
setlocal enableDelayedExpansion

::build "array" of folders
set folderCnt=0
for /f "eol=: delims=" %%F in ('dir /b /ad *') do (
set /a folderCnt+=1
set "folder!folderCnt!=%%F"
)

::print menu
for /l %%N in (1 1 %folderCnt%) do echo %%N - !folder%%N!
echo(

:get selection
set selection=
set /p "selection=Enter a folder number: "
echo you picked %selection% - !folder%selection%!

在上面的代码中,“数组”元素被命名为folder1、folder2、folder3...

有些人使用文件夹[1]、文件夹[2]、文件夹[3]...之类的名称。它当然看起来更像数组,但这正是我不这样做的原因。不太了解批处理的人会看到这样的变量,并假设批处理正确支持数组。

如果任何文件夹名称包含 !,上述解决方案将无法正常工作。字符 - 由于延迟扩展,文件夹名称将在 %%F 变量扩展期间损坏。有一种解决方法涉及打开和关闭延迟扩展,但除非需要,否则不值得进入。

关于arrays - DIR 输出到 BAT 阵列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10544646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com