DOS echo%变量%" Echo为ON"

时间:2015-07-03 14:56:23

标签: batch-file dos

我有一个dos批处理文件。

mycommand.exe>c:\temp
find /B Serv c:\temp>c:\temp2
set /p var1=<c:\temp2
SET var2=%var1:~-7%
echo %var2%

这只是DOS,而不是Windows环境。

问题是,批处理文件输出是: &#34; Echo是ON&#34;。无法回显VAR2变量。

mycommand.exe是一个简单的应用程序。不重要。

> type c:\temp"
VERSION 45.2
TAG1 NUMBER is 1234567
Serv NUMBER is 9654754

> type c:\temp2
c:temp Serv NUMBER is 9654754

如果我想回应VAR2变量,我该怎么办? 我无法使用&#34; setlocal enabledelayedexpansion&#34;因为setlocal&#34;命令或文件名无法识别&#34;。

编辑:我到底想要什么? 我想ECHO mycommand.exe输出第3行最后7个字符。多数民众赞成。

1 个答案:

答案 0 :(得分:1)

&#34;好老DOS&#34;很老,但不是很好。

您的问题可以通过构建临时.bat文件来解决。

这里详细描述:

https://support.microsoft.com/en-us/kb/66292

我没有DOS可用,所以我无法测试,但这应该适合你:

mycommand.exe>c:\temp.txt
find "Serv " c:\temp.txt>c:\temp2.txt

REM init.txt should already exist
REM to create it:
REM   COPY CON INIT.TXT
REM   SET VARIABLE=^Z
REM ( press Ctrl-Z to generate ^Z )
REM
REM also the file "temp2.txt" should exist.

copy init.txt+temp2.txt varset.bat
call varset.bat
for %%i in (%variable%) do set numb=%%i
echo Server number is: %numb%
REM just because I'm curious, does the following work? :
set var2=%variable%
echo var2 is now %var2%

init.txt的手动创建只需要完成一次,如果你可以忍受,它总是创建一个具有相同名称的变量(因此最后两行,所以你可以使用相同的init。 txt一遍又一遍 - 请反馈,是否有效 - 我很好奇)