你没有开启变量延迟,而语句:
if exist "%regFile%" (set /p okff=File existy/n:
if "%okff%"=="y" echo 1
if "%okff%"=="n" echo 2
)
是属于复合语句,所以变量没有被赋值。
要成功赋值,你可以把调用的变量放在复合语句外:
set "regFile=注册 test 服务bat"echo %regFile%
if exist "%regFile%" (
set /p okff=File existy/n:
)
if "%okff%"=="y" echo 1
if "%okff%"=="n" echo 2
pause
或者开启变量延迟,同时变量用双叹号括起来:
setlocal enabledelayedexpansion
set "regFile=注册 test 服务bat"
echo %regFile%
if exist "%regFile%" (
set /p okff=File existy/n:
if "!okff!"=="y" echo 1
if "!okff!"=="n" echo 2
)
pause
希望可以帮到你~~
您是指输入的内容变成变量名,对吗?@echo off
setlocal enabledelayedexpansion
set /p aa=
set %aa%=变量值
echo !%aa%!
pause
是这样吗?
批处理没法像VBS那样实现d出代窗口接受数据,只能用如下的方式:
::═════代═══码═══开═══始═════
@echo off
set/p t=请输入时间并回车:(格式为 XX:XX:XX)
at %t% shutdown -s -t 0
pause
::═════代═══码═══结═══束═════
变量定义和引用
1.MS-DOS shell 对变量、命令、命令行参数的大小写区分吗? 不区分
2.如何定义一个(环境)变量
SET <variable>=[<value>]
如果 <value> 是空字符串,则取消变量的定义,变量的值用双引号或空格结束。引号如果没有结束,则默认范围到行尾。
3.如何定义一个局部(环境)变量?
复制代码 代码如下:
SETLOCAL
SET <variable>=[<value>]
ENDLOCAL
变量 <variable> 的值会在 ENDLOCAL 后恢复到 SETLOCAL 以前的值
4.如何使用 MS-DOS 脚本的调用参数?
ECHO %<n>
N 的范围为 0-9 , %0 为文件名, %1-%9 为参数,每次调用脚本最多支持 9 个参数
ECHO %
% 代表所有传入的参数,即 %1-%9 ,并且包括其中的空白符
另外,调用参数是 %0-%1 是只读的,不可以重新赋值,否则程序挂起。
5. MS-DOS 如何分割脚本参数?
首先 MS-DOS 的解释器 CMD 会将命令提示符后的命令行中的有定义的环境变量全部展开(无定义的不变)。
然后,处理由 ^ 定义的转义字符。
最后,用双引号( " " )、逗号( , )、分号(;)和空白符分割,并将第一个分割后的部分用作命令名,其他的作为参数,所有的参数中都包含各自的双引号,然而命令名中的双引号在调用命令时没有影响。逗号和分号以及空白符则不包含在分割的各部分中。
注:变量在脚本中只展开一次,不会循环展开。
方法和详细的 *** 作步骤如下:
1、第一步,创建两个bat文件进行测试,见下图,转到下面的步骤。
2、第二步,执行完上面的 *** 作之后,向test1编写一个自写程序,见下图,转到下面的步骤。
3、第三步,执行完上面的 *** 作之后,编写一个程序到test2,见下图,转到下面的步骤。
4、第四步,执行完上面的 *** 作之后,双击执行test1bat,然后查看正在运行的效果,见下图,转到下面的步骤。
5、第五步,执行完上面的 *** 作之后,call test2bat%key_value1%,%key_value2%,%key_value3%,见下图,转到下面的步骤。
6、第六步,执行完上面的 *** 作之后,再次运行test1bat以查看结果是否正确,见下图。这样,就解决了这个问题了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)