2012-03-30 61 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 
)