2012-03-30 88 views
2
@echo off 
for /f %%a in (httpd.conf) do (
echo %%a 
) 

我有一個看起來像這樣的文件:防止CMD閱讀空間分隔

ServerRoot "C:/xampp/apache" 
Listen 80 
LoadModule actions_module modules/mod_actions.so 
LoadModule alias_module modules/mod_alias.so 

然而,當我運行該批處理文件,它輸出這樣的:

ServerRoot 
Listen 
LoadModule 
LoadModule 

看起來cmd只是將行提到第一個空格字符......有人知道如何獲得整個行嗎?

我已經嘗試添加選項給了命令......這些都試過了,並且這些都失敗:

for /f "eol=# tokens=1-9 delims=¬" 
for /f "tokens=* delims=¬" 
for /f "tokens=* delims=:\=" 
for /f "tokens=1-6" 

回答

2

將「delims =」添加到您的命令中,以便它處理包含空格的行。所以,你的代碼應該看起來有點像這樣:

@echo off 
for /f "delims=" %%a in (httpd.conf) do (
echo %%a 
) 

你也可以添加更多的分隔符列表像逗號等要做到這一點,你剛纔添加的字符爲「delims =,+」

+0

這不起作用。你試過了嗎? – adarshr 2012-03-30 08:47:42

+0

我有。我用這樣的命令來複制名稱中包含空格的文件。 – 2012-03-30 08:52:22

+0

對不起,我想我在那裏增加了一個額外的空間。拿出分隔符中的空格。 – 2012-03-30 08:55:32

2

你沒有嘗試下面的選項,我敢打賭。請注意,=之後沒有空格。

for /f "delims=" %%a in (httpd.conf) do (
    echo %%a 
)