arrays - 通过变量访问数组索引
问题描述
我正在尝试创建一个菜单,允许用户深入到文件夹中以批量复制和同步文件。但是,我很难在用户输入的索引处访问数组值。在 for 循环中,它们显示良好,因此看起来它们在数组中被正确捕获。
但是当我稍后尝试设置它们或回显它们时,我没有得到正确的输出。
不知道我在这里做错了什么。
:DirectoryContents
setlocal EnableDelayedExpansion
if exist "\\test\proj\dpa3\EXTERIOR\VCSE DVA Sync\%programNameAndYear%" (
echo The sub-folders in this folder on the share drive are:
echo.
Pushd "\\test\proj\dpa3\EXTERIOR\VCSE DVA Sync\%programNameAndYear%"
REM dir /b /ad
set /a ID=0
for /d %%a in (*) do (
set folderName[%ID%]=%%a
echo (!ID!^) %%folderName[%ID%]%%
set /a ID=ID+1
)
echo.
echo Please, select an assembly
SET /P "selection=Input>"
SET assemblyName=!folderName[%selection%]!
echo assemblyName !assemblyName!
call echo Folder0 !folderName[%0%]!
call echo Folder1 !folderName[%1%]!
call echo Folder2 !folderName[%2%]!
echo test !folderName[%selection%]!
call echo test2 %%folderName[%selection%]%%
pause
echo This folder does not exist on the shared drive
)
endlocal
REM pause
popd
exit /b
好的,所以根据反馈我对代码进行了一些更新。我现在确信文件夹名称已正确存储在数组索引中。通过对索引进行硬编码,我可以很容易地看到这一点。
所以echo Folder0 !folderName[0]!
返回第一个文件夹的名称等。
不过改了之后
set folderName[%ID%]=%%a
echo (!ID!^) %%folderName[%ID%]%%
to
set folderName[!ID!]=%%a
echo (!ID!^) %folderName[!ID!]%
我在索引号后得到一个空白。前任。(1)
也未设置 assemblyName 变量。
我试过了
SET assemblyName=!folderName[%selection%]!
call echo assemblyName !assemblyName!
and
SET assemblyName=%folderName[!selection!]%
call echo assemblyName !assemblyName!
两者都返回空白。
最终我要做的是使用网络路径中的 assemblyName 变量来访问该文件夹。
Pushd "\\test\proj\dpa3\EXTERIOR\VCSE DVA Sync\%programNameAndYear%\!assemblyName!\"
解决方案
您应该使用延迟扩展(!扩展!)。代替:
set folderName[%ID%]=%%a
和
set folderName[!ID!]=%%a
要访问分配给它的循环之外的变量,对于单个元素,请使用索引号。
echo Folder0 %folderName[0]%
或者,要访问整个数组,您可以使用 For /L 循环,如下所示:
For /L %%A in (0,1,%ID%) do (Echo(!folderName[%%A]!)
最后,当使用 增加变量时Set /A
,它确实需要引用自身:
Set /A ID+=1
就足够了。
推荐阅读
- mysql - mysql滚动总和累积序列化
- ios - Swift iOS ReactiveKit:调用观察者导致多次触发动作?
- java - 使用存储在外部文件中的值初始化变量
- counter - iptables:MASQUERADE 规则的数据包计数器行为
- coq - Coq - 如何在假设错误时证明 False
- javascript - 计算函数在一个组件中运行,但不在另一个组件中运行
- python - 如何将我的 NUMPY 数组导出为 CSV 或 EXCEL 文件
- typescript - 带有 TypeScript 的 Mocha:参数“id”隐式具有“任何”类型?
- mysql - 如何在 MySQL 中创建日期和价格之间的计算
- javascript - 如何在javascript中检查输入值