dos批处理下自动给环境变量赋值的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dos批处理下自动给环境变量赋值的问题相关的知识,希望对你有一定的参考价值。

我的回答仅供参考,不嫌水平低和罗嗦的话,我空间有篇关于变量的文章也可以去看看。
1
用户定义的变量称之为环境变量不妥,
因为所设置的变量仅是在当前CMD窗口下有效,也并非定义某种环境
2
应该说CMD提供给变量赋值仅一个命令,那就是set
3
set
命令给变量赋值有三种基本形式,不加参数的和加
/p
及/a
其中,set/p
除了能接收键盘输入值外,还提供了你所说的形式,把一个文件的第一行赋给变量,
而set/a
兼计算功能,将结果(数字型)赋给变量,且可一条命令(不用连接命令)给多个变量赋值
4
按道理说用管道命令是可以代替用户输入的,正如你所说的实际上对set/p
不行,我只能这么猜测,
命令无非是设计出来的程序,一般命令如遇运行过程中需要接收键盘输入,设计者都考虑了可以接收管道传入值代替,而这个set/p却并没有考虑它,以前DOS的set命令并没有/p功能,也许当初在"改造"它时疏忽,后来又觉得没必要再去修改。总之实际不行是硬道理,
没必要去追究为什么
5
我想很多人会有这种看法,要是可以把某命令的结果有个命令直接赋给变量就好了,遗憾的是没有,好在有个for命令,经扩展功能后,确实“强大”得很,其中加/f
的可以把命令结果、文件内容或多行的字符串,逐行按需要截取后直接进行处理或再利用set命令赋给某变量备用,提到它并不是说多了一种赋值方法,而是很多时候是在这个命令里(还是利用set)赋值的
参考技术A echo
abcd|set
/p
a=
这样有点多次一举,下面这句能实现你的想法
set
a=abcd

Windows DOS命令 bat批处理脚本交互操作

set的主要作用是赋值

set /p opt=Enter your option:

先显示Enter your option:,再接收用户输入的内容,以回车表示结束,赋值给变量opt

实例测试:

@echo off

echo 1.show ip address
echo 2.show directory

:main
set /p opt=Enter your option:

if %opt% == 1 goto one
if %opt% == 2 goto two

echo Invalid option
goto main

:one
ipconfig /all
pause > nul
exit

:two
dir
pause > nul
exit

以上是关于dos批处理下自动给环境变量赋值的问题的主要内容,如果未能解决你的问题,请参考以下文章

shell环境变量与变量赋值

bat脚本如何将命令执行的结果赋值给变量

怎样在for循环变量中,将循环变量赋值给一个变量 批处理 bat

bat批处理下如何像shell一样将命令执行的效果赋值给变量

dos for 命令详解!

批处理获取返回值(将执行结果赋值变量)