执行下面的段bat,输入的值没有赋值

执行下面的段bat,输入的值没有赋值,第1张

你没有开启变量延迟,而语句:

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

或者开启变量延迟,同时变量用双叹号括起来:

@echo off
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以查看结果是否正确,见下图。这样,就解决了这个问题了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10561414.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存