批量空间问题

时间:2011-06-25 11:56:37

标签: batch-file

我尝试使用此格式列出目录中的所有文件和目录

  

DIR1 ::: DIR2 :::的file1 file2的::: :::

为实现这一目标,我编写了一个批处理脚本。看看它:

    @echo off
    SETLOCAL ENABLEDELAYEDEXPANSION
    SET M=
    FOR %%d IN ('dir /B') DO SET M=!M!%%d:::
    ECHO %M%

嗯,它适用于不包含空格的目录/文件,但对于那些包含空格的目录/文件,它只会显示第一个单词。 例如,假设文件是​​“Blue hills.jpg”和“Sunset.jpg”。

预期结果当然是

  

Blue hills.jpg ::: Sunset.jpg :::

但是出现的是

  

蓝::: Sunset.jpg

仅供参考,我使用的是WinXP。 *那有关系吗?我试图在“%% d”中加上引号,但它不起作用。我怎样才能解决这个问题? 谢谢您的帮助!抱歉我的英语不好,我真的需要改进它..

1 个答案:

答案 0 :(得分:3)

您需要为包含任何文本(包含空格)for的文件名运行"tokens=*"循环。 /f开关用于搜索文本(文件名文本)。

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET M=
FOR /f "tokens=*" %%d IN ('dir /B') DO SET M=!M!%%d:::

ECHO %M%

适用于包含空格的文件和目录。

如果您使用tokens=1,那么您将获得每个文件名的第一个单词(使用空格作为分隔符)。所以你会看到

Blue:::Sunset.jpg:::

如果您使用tokens=2,那么您会得到第二个字:

hills.jpg:::
相关问题