2014-07-08 92 views
0

變量我試圖運行此腳本分配線在批處理DOS

SETLOCAL EnableDelayedExpansion 
ECHO Q 
SET cnt=1 
ECHO Q 
FOR /F "tokens=* delims= usebackq" %%x IN ("%mytextfile.txt%") DO (
ECHO Q 
    SET "PRJ_NAME=%%x" 

我想FRM文本文件指定名稱變量PROJ_NAME。 它顯示錯誤:此命令的語法不正確 「FOR/F」tokens = * delims = usebackq「%% x IN(」%mytextfile.txt%「)DO(」This line 我該怎麼辦?

+0

從文件名周圍卸下''%。文件名不是一個環境變量。你也錯過了'DO'塊末尾的''''。 –

回答

0

你應該得到一個DO was unexpected at this time錯誤,而不是錯誤您報告。

如果您正在使用「命令提示符」窗口下,然後我提到的錯誤似乎是因爲do子句沒有終止)

如果你使用真正的DOS,那麼你會得到你的語法錯誤,因爲for /f在DOS下不受支持,它是NT DOS模擬器引入的擴展,也稱爲「命令提示符」,但非正式地稱爲「DOS」。

+0

)是否在實際的程序中。我只提到它的一部分。 – shruti

+0

我們只能使用我們展示的內容。你還沒有回覆你正在使用哪個版本的「DOS」。 – Magoo

+0

好吧...我正在使用命令提示符。並試圖運行包含上面給出的代碼的批處理文件。 – shruti

0

從文本文件中讀取一行,並將其分配給一個環境變量使用:

FOR /F "delims=" %%x IN (mytextfile.txt) DO (
    SET "PRJ_NAME=%%x" 
    rem more commands 
) 

但是這隻有當該文件的全名不包含空格字符,因此可以指定沒有雙引號。

但是usebackq需要激活被1個或更多的空間雙引號字符串的備用解析在文件名:

FOR /F "usebackq delims=" %%x IN ("my text file.txt") DO (
    SET "PRJ_NAME=%%x" 
    rem more commands 
) 
+0

嘗試這兩件事情..仍然working.getting相同的錯誤。 – shruti

+0

在Windows XP上的命令提示符窗口中,通過執行上述批處理文件發佈答案之前,我已經嘗試了我的兩個建議。該代碼也可以在較新版本的Windows上運行。您要麼使用Windows(Windows 95/98)的更舊版本,要麼使用MS-DOS 6.0,或者您根本沒有嘗試過我發佈的行。 「mytextfile.txt」包含什麼?在批處理文件中,文本文件的路徑是什麼?如果您不向我們展示真正的批處理代碼和文本文件的實際內容,我們無法幫助您。 – Mofi