Пакет ЗА космическую проблему - PullRequest
0 голосов
/ 25 июня 2011

Я попытался перечислить все файлы и каталоги в каталоге, используя этот формат

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».

Ожидаемый результат, конечно,

Голубые холмы.jpg ::: Sunset.jpg :::

Но вместо этого появляется

Синий ::: Sunset.jpg

К вашему сведению, я использую WinXP. * Это имеет значение? Я пытался поместить кавычки в "%% d", но это не работает. Как я могу это исправить? Спасибо за помощь! И извините за мой плохой английский, я действительно должен улучшить это ..

1 Ответ

3 голосов
/ 25 июня 2011

Вам необходимо запустить цикл 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:::
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...