2016-09-19 15 views
3

我正在寫一個窗口CMD批處理文件中的文本,即(爲簡化的目的)應該呼應這個文件的每一行:字面上回聲「的」

Flash 
your 
lights 
on 
and 
off 

時,它得到的問題是第4和第6的話,它最終運行echo onecho off,這確實不實際上呼應的文字,而不是它只是設置回聲的狀態爲ON和OFF。

for /F %%a in (DataFile.txt) do echo %%a 

輸出的結果是:

Flash 
your 
lights 
and 

有沒有辦法從字面上呼應文字onoff

+0

你有沒有試過圍繞引號中的%% a? –

+0

只是在每個單詞附帶引號。然後在''和''off''上輸出'「,但是所有額外的引號都是一個新問題。 – abelenky

+0

使用'回聲(%%了'(這個語法看起來很奇怪,但是是唯一安全的方式來'echo'每一個文字,甚至'/',字面意思)...... – aschipfl

回答

3

根據this post on DosTips.com,回覆任何文本的唯一安全方法是使用奇怪的語法echo(。因此,對於你的命令行:

for /F %%a in (DataFile.txt) do echo(%%a 

有常用的語法echo.,但這種失敗的情況下,有一個在當前工作目錄中稱爲echo.(沒有擴展名)的文件。
如果您試圖回顯以問號開頭的字符串(因爲/後跟?被解釋爲/?開關以顯示該命令的幫助文本),則有時使用的語法echo/會失敗。

0

試試這個:

@echo off 
SETLOCAL DisableDelayedExpansion 
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ %userprofile%\Desktop\DataFile.txt"`) do (
    set "var=%%a" 
    SETLOCAL EnableDelayedExpansion 
    set "var=!var:*:=!" 
    echo(!var! 
    ENDLOCAL 
) 
Pause 

退房this link

開啓和關閉,在你正在做的事情是行不通的,因爲他們是你所說的(在語言中的保留字)他們被用來作爲@echo off@echo on

我張貼的腳本得到周圍上下文那個小問題。然而,由於我不知道劇本是如何做的,我在批處理中缺乏知識迫使我得出結論。