编号变量(当找到有效路径时)



也许我并没有给它一个好标题,无论如何

你好

我批量编写了一些脚本,需要帮助。

FOR我检查所有可能的驱动器号A-Z,当其中一些将找到X:UsersPublicDesktop,然后将此字母保存到编号的变量1_windrive2_windrive3_windrive等。

但是我的代码不起作用,我不知道问题出在哪里。

这是代码:

@echo off
setlocal EnableDelayedExpansion
set number=1
if not defined !number!_windrive (
for %%p in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%p:UsersPublicDesktop (
set !number!_windrive=%%p
echo !number!%_windrive%
set /a "number=%number%+1"
)
pause

解决方案代码:

@echo off
setlocal EnableDelayedExpansion
set number=1
if not defined windrive_!number! (
for %%p in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%p:UsersPublicDesktop (
set windrive_!number!=%%p
CALL echo %%windrive_!number!%%
set /a number=number+1
)
)
echo %windir%
echo %windrive_1%
echo %windrive_2%
echo %windrive_3%
echo %windrive_4%
echo %windrive_5%
pause
set windrive_!number!=%%p
CALL echo %%windrive_!number!%%
set /a number=number+1

列出windrive变量集的简单方法是

set windrive

正如squishy所说,以数字开头的变量可能会导致cmd句法中风。

%var%表示"启动代码块时var的值",因此随着循环的进行,它将保持不变。!var!表示在循环中更改的值。

引号对于set/a都不需要,%也不是!- 变量名本身意味着"变量的运行时值"(即当它在循环中发生变化时),这与是否调用enabledelayedexpansion无关。

[编辑 -for循环中的固定echo]

相关内容

最新更新