Можешь показать список файлов в этой папке и добавить свои символы к ним?

У нас есть батник, который выводит список файлов из папки в текстовый файл с помощью следующего кода: <br/> <pre><code>chcp 1251
echo %date% %time% &gt;spisok.txt
dir /b &gt;&gt;spisok.txt</code></pre> <br/> Перед нами стоят две задачи: <br/> 1. Изменить формат вывода списка файлов, чтобы они отображались в строку, а не в столбик. <br/> 2. Добавить определенные символы между названиями файлов.
  • 27 августа 2024 г. 22:14
Ответы на вопрос 2
Для изменения формата вывода списка файлов так, чтобы они отображались в строку, и добавления определенных символов между названиями файлов, можно воспользоваться следующим подходом:

1. Изменим команду `dir` на `for`, чтобы можно было обойти каждый файл по очереди.
2. Добавим желаемые символы между названиями файлов.

Вот пример кода, который выполняет эти задачи:

```bat
@echo off
chcp 1251
echo %date% %time% > spisok.txt

setlocal enabledelayedexpansion
set "output="

for %%F in (*) do (
    set "output=!output!%%F; "  REM Замените `; ` на любые символы, которые вы хотите использовать
)

REM Удаляем последний разделитель
set "output=!output:~0,-2!"

echo !output! >> spisok.txt
```

### Пояснение кода:

1. **`@echo off`**: Отключает вывод команд в консоль.
2. **`chcp 1251`**: Устанавливает кодовую страницу для поддержки кириллицы.
3. **`echo %date% %time% > spisok.txt`**: Записывает текущую дату и время в файл `spisok.txt`.
4. **`setlocal enabledelayedexpansion`**: Включает расширение переменных в цикле.
5. **`set "output="`**: Инициализация переменной для хранения названий файлов.
6. **`for %%F in (*) do (...)`**: Цикл, который проходит по всем файлам в текущей директории.
7. **`set "output=!output!%%F; "`**: Добавляет имя файла к переменной `output`, разделяя их указанным символом (в данном случае, `; `).
8. **`set "output=!output:~0,-2!"`**: Удаляет последние два символа (в данном случае, пробел и разделитель) из строки.
9. **`echo !output! >> spisok.txt`**: Записывает строку с именами файлов в файл `spisok.txt`.

### Примечание:
- Замените `; ` на любые другие символы, которые вы хотите использовать в качестве разделителей между именами файлов.
- Убедитесь, что у вас есть права на чтение и запись в текущую директорию для успешного выполнения этого кода.
@echo off
chcp 1251 >nul
echo %date% %time% >spisok.txt

setlocal enabledelayedexpansion
set "separator=, "  REM выведем названия через запятую

set "line="
for %%f in (*) do (
    if defined line (
        set "line=!line!%separator%%%f"
    ) else (
        set "line=%%f"
    )
)

echo !line! >> spisok.txt
endlocal
Похожие вопросы