也许我没有给它一个好头衔,无论如何
您好,
我批量编写了一些脚本,需要帮助。
FOR
我检查所有可能的驱动器字母AZ,当其中一些驱动器将被找到X:\Users\Public\Desktop
时,请将此信件保存到带编号的变量1_windrive
,2_windrive
, 3_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:\Users\Public\Desktop (
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:\Users\Public\Desktop (
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
答案 0 :(得分:1)
set windrive_!number!=%%p
CALL echo %%windrive_!number!%%
set /a number=number+1
列出windrive
变量集的简便方法是
set windrive
正如软弱所说,用数字开始变量可能会导致cmd
句法中风。
%var%
表示“代码块启动时var
的值”,因此随着循环的进行它将保持不变。 !var!
表示在循环中更改的值。
set/a
不需要引号,%
和!
都不需要引号 - 变量名本身就是“变量的运行时值”(即随着变化而变化)在循环中)这是无论是否已调用enabledelayedexpansion
。
[编辑 - 在echo
循环中修复for