我尝试使用此格式列出目录中的所有文件和目录
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”中加上引号,但它不起作用。我怎样才能解决这个问题? 谢谢您的帮助!抱歉我的英语不好,我真的需要改进它..
答案 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:::