日期:2014-05-17  浏览次数:20796 次

熟悉WindowsNT DOS命令的高手请进!
我在XP系统下写了一个bat文件,需要获取用户输入的值,部分代码如下:
set /p dBegin=请输入开始时间:
echo %dBegin%
可以显示我输入的值,但是把这个bat文件放在WindowsNT环境下就不好使了,我查了一下NT环境下的set命令,NT环境里好像没有“/p”的指令,所以打开这个bat文件时就没有显示让我输入值的提示,而是直接显示dBegin是off,现在我想在NT环境下获取到用户输入的值,bat文件如何写,请哪位大侠指教!

------解决方案--------------------
nt 环境下set可能没有/p选项。要实现用户输入给变量赋值有2个办法:
1,将所需输入的信息做为批处理的参数一起输入。比如。
test.bat 开始时间
程序中调用 %1就可以了。
2,用input命令(如果有)

貌似还有个工具string。可以在网上找下。

------解决方案--------------------
BatchFile code
@echo off
echo WScript.Echo "set dBegin=" + WScript.StdIn.ReadLine>input.vbs
echo 请输入开始时间:
cscript //nologo input.vbs>input.bat
call input.bat
echo %dBegin%
pause
del input.vbs input.bat

------解决方案--------------------
missing77兄说得很明白了。

echo WScript.Echo "set dBegin=" + WScript.StdIn.ReadLine>input.vbs
生成input.vbs并向其中写入内容 WScript.Echo "set dBegin=" + WScript.StdIn.ReadLine。
代码的意思是输出字符串“set dBegin=从控制台接受到的内容”。

cscript //nologo input.vbs>input.bat
执行刚才生成的input.vbs,并把输出的内容重定向到input.bat,即写到input.bat。这样input.bat的内容就是“set dBegin=从控制台接受到的内容”。用参数 //nologo 是不显示 Logo,否则input.bat也会有 Logo 内容。

call input.bat就完成了变量的赋值了。

探讨
sllss你好:
能把你这个命令详细说明一下吗?“WScript.Echo "set dBegin=" + WScript.StdIn.ReadLine>input.vbs
”和“cscript //nologo input.vbs>input.bat” 是什么意思,还有多了一个input.bat,他是什么,具体代码是什么?
谢谢

------解决方案--------------------
不怎么懂。只有好好给你顶贴,呵呵。
------解决方案--------------------
我不是高手,正好在看批处理,给你试了一下。

@echo off
echo 输入一个回车,输入第二个回车,第三行输入CTRL+Z并回车
type con>test.txt
for /f "delims=" %%i in (test.txt) do (
rem 这里就可以看到变量%%i的内容是否正确了
echo %%i
rem 在这里插入你想要的应用
)
del test.txt
pause

没办法,输入最后一定要按ctrl+z或F6结束,你看看有没有用吧。