2015-07-03 82 views
0

我有一個dos批處理文件。DOS echo%variable%「Echo is ON」

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

這只是DOS,而不是windows環境。

問題是,批處理文件的輸出是: 「Echo is ON」。無法回顯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變量? 我不能使用「setlocal enabledelayedexpansion」,因爲setlocal「Command或filename not recognized」。

編輯:我想要什麼? 我想ECHO mycommand.exe輸出第三行最後7個字符。就這樣。

+0

DOS'set'命令不支持'/ p'。它也不支持替換它只是'set variable = value' – Stephan

+0

DOS是否有FIND上的/ B,現在我想到了嗎? – Joe

+0

'find'在DOS和Cmd中都沒有'/ B'。 (你想'findstr',它有'/ b',但它在DOS中不可用) – Stephan

回答

1

「好老的DOS」很舊,但不是很好。

你的問題可以通過建立一個臨時的.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 - 請反饋,不管它作品 - 我很c好極了)

+0

增加了代碼,_should_運行。 – Stephan