-
这与批次的预处理机制有关。
批处理过程将预处理 if 之后的所有语句,将它们全部读入内存,然后展开变量:expand %n% 和 %m%,即替换它们; 但是,%n% 和 %m% 未在 if 语句之前定义,因此 %n%、%m% 被视为未定义,并且会发生错误。
但是你会说,我在 if 之后定义了它,而你没有打开延迟变量,批处理不会识别你在 if 语句中所做的变量定义,所以你应该打开延迟变量:
echo off
set p c=请输入一个数字:
setlocal enabledelayedexpansion
if %c%==1 (
set p n=请输入wifi名称:
netsh wlan set hostednetwork ssid=!n!
set p m=请输入wifi密码:
netsh wlan set hostednetwork key=!m!
回声设置完成。
pause
-
c% 表示取变量。
if %c%==1 -》如果 c==1 括号是多余的。
-
使用 extension 命令,在对文件执行此操作之前添加一行 setlocal enabledelayedexpansion,该行通常添加到批处理文件的顶部;
如果需要使用相对路径或绝对路径,可以查看 for
此外,还增强了对变量引用的替换。 现在,您可以使用以下选项语法:
i - 删除所有引号 ("),扩展 %i% fi - 将 %i 扩展为完全限定的路径名% di - 仅将 %i 扩展为一个驱动器号% pi - 仅将 %i 扩展到一个路径% ni - 仅将 %i 扩展为一个文件名% 习 - 仅将 %i 扩展为一个文件扩展名%si - 仅使用短名称将路径扩展到扩展名% AI - 将 %i 扩展到文件属性% ti - 将 %i 扩展到文件日期 time% zi - 将 %i 扩展到大小% $path:i - 查找路径环境变量中列出的目录并扩展 %i。
以查找第一个完全限定的名称。 如果未定义环境变量名称,或者未找到文件,则此组合键将扩展为空字符串。
-
@echo off
findstr /i /c:"computer name" >
set /p a=<
delfor in (%a%) do ..
在 cmd 中无法将命令的结果直接分配给环境变量,您可以将结果输出到文件,然后通过重定向输入将其传递给 set p。
当然,这是最简单的方法,你也可以使用 for 为其赋值:
echo off
for /f "delims=""" %%i in ('findstr /i /c:"computer name" ') do (
set a=%%i)
for in(%a%) do...
在这种情况下,不能在第一个 for 中直接调用 %a%,如果调用了 %a%,则必须启用延迟环境变量。
如果你对批处理一无所知,可以阅读我的博客,我自己写的教程,希望能帮到你!
-
第 2 句表示 2 个明显的小错误。
for /f "delims=" in %%1 ('%a%')do...
对于没有赋值变量的 in(%a% 直接打印 findstr.)。file) 做....
如果你的电脑名是要看电脑名的,就回显%computername%,如果不是,正确的语法就是我上面说的第一句话。
-
第二句的格式不正确。
其实两句话可以放在一起,比如:
for /f %%a in ('findstr /i /c:"computer name" ')do (
系列命令。
-
echo offsetlocal enableDelayedExpansionfor %%v in ( time% )do set var=%%vecho %var%pause for 的 %%v 变量仅限于 set 语句,并单独设置该变量。
-
for 使用两个百分号加上变量的形式(bat 使用两个百分号,命令行使用一个百分号),其中变量 var 是字母或数字,例如 %%a、%%1,这种形式的两个百分号加一个字母或数字只能出现在 for 中。 设置 var=xx,这里是设置变量,这里的变量 var 可以是一个单词,几个字符,比如 123、hello、abcd,设置后,以后要用你刚才设置的变量值(比如 echo)用两个百分号来表示变量名。 这是规则。
-
for 中的变量是形式变量,echo 集中的变量是一般变量。
-
!file:e:\b\=!
这意味着删除了 file 变量中的子字符串 e: b,并且删除此 ** 中的子字符串的结果将分配给 file2 变量。
del /f /q "!file!"表示强制删除! file!代表的文件,不需要用户确认。
此批处理的目的是查找 e:b 目录及其子目录中的所有文件,如果 d:a 中的同一位置没有同名文件,请删除该文件。
-
在 bat 文件中,多个命令写在一行或括号中,如果使用在行或括号中定义或修改的变量,则需要启用延迟变量扩充,并用感叹号引用变量。 在 bat 文件中,使用 setlocal enabledelayedexpansion 启用延迟变量扩展,在命令提示符窗口中,使用 cmd v:on
最好在 任 命令的文件名中加上引号,以防止文件名中的空格等特殊字符引起的错误。
echo off
setlocal enabledelayedexpansion
for %%i in (*do (
set /a a+=1
if /i not "%%~xi"==".bat" ren "%%i" "!a!.txt"
停顿:如果我不这样做,在哪里"%%~xi"==".bat"防止重命名 bat 文件。
一般来说,在三相电路中,火线使用红、黄、绿、蓝三种颜色来表示三根火线,中性线使用黑色。 在单相照明电路中,黄色一般为火线,蓝色为中性线,黄色和绿色为地线。 在某些地方,红色用于火线,黑色用于中性线,黄色和绿色用于地线。
它是将 DAT 的值存储在加法器地址上,注意它是一个 16 位无符号数字。 >>>More
我喜欢“直飞3000英尺,疑似银河落九天”的庐山瀑布; 我喜欢泰山的山顶,“摆动胸膛,生出层云,闯入鸟儿”; 我喜欢黄河的九条弯道,“奔海而不归”; 我喜欢长江三峡,“海峡两岸的猿猴都哭得停不下来”; 我喜欢《秦世明月韩世观》古朴的赛贝; 我喜欢“日出河花红”的美丽江南。 >>>More