Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
sotrudnik87
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 6
1

Создание пробелов, интервала между каталогами, при создании списка файлов в каталогах и подкаталогах

14.07.2019, 06:48. Просмотров 1040. Ответов 9
Метки нет (Все метки)

Все привет!
Есть батник с помощью которого я создаю опись каталогов, мне его помогли довести до ума в соседней ветке.

Windows Batch file
1
2
3
4
5
6
7
@echo off
chcp 1251
(for /f delims^= %%i in ('dir /s /b /a-d') do (
set "file=%%i"
call echo %%file:%cd%=%%
)) > Список.doc
start список.doc
По окончании он выводит вот такой список файлов

\А\Абвов Алексей\Сталкер-2\Сталкер-2 1.txt
\А\Абвов Алексей\Сталкер-2\Сталкер-2 2.txt
\А\Абвов Алексей\Сталкер-2\Сталкер-2 3.txt
\А\Абвов Алексей\Сталкер-2\Сталкер-2 4.txt
\А\Абвов Алексей\Третий шанс\1 Агент 000.txt
\А\Абвов Алексей\Третий шанс\2 Прораб стройки светлого будущего.txt
\А\Абвов Алексей\Цифровая крепость\1 Цифровая крепость.txt
\А\Абвов Алексей\Цифровая крепость\2 Цифровая крепость.txt
\А\Абвов Алексей\Цифровая крепость\3 Цифровая крепость.txt
\А\Абвов Алексей\Цифровая крепость\4 Цифровая крепость.txt
\А\Абвов Алексей\Черная полоса\Чёрная полоса 1.txt
\А\Абвов Алексей\Черная полоса\Черная полоса 2.txt
\А\Абвов Алексей\Что нас не убивает\1 Что нас не убивает.txt
\А\Абвов Алексей\Что нас не убивает\2 Испытание силой.txt
\А\Абдуллаев Чингиз\Дронго\001. Голубые ангелы .txt
\А\Абдуллаев Чингиз\Дронго\002. Почти невероятное убийство.txt
\А\Абдуллаев Чингиз\Дронго\003. Охота на человека.txt
\А\Абдуллаев Чингиз\Дронго\004. Игры профессионалов.txt
\А\Абдуллаев Чингиз\Дронго\005. В ожидании апокалипсиса.txt
\А\Абдуллаев Чингиз\Дронго\006. Правило профессионалов.txt
\А\Абдуллаев Чингиз\Дронго\007. Выбери себе смерть.txt
\А\Абдуллаев Чингиз\Дронго\008. Правила логики.txt
\А\Абдуллаев Чингиз\Дронго\009. Закон негодяев.txt
\А\Абдуллаев Чингиз\Дронго\010. Кредо негодяев.txt
\А\Абдуллаев Чингиз\Дронго\011. Совесть негодяев.txt

Как видите все в одной куче.
Подскажите, пожалуйста, возможно ли подредактировать этот батник. чтобы он делал интервалы между разными каталогами?
Чтоб было примерно так
\А\Абвов Алексей\Сталкер-2\Сталкер-2 1.txt
\А\Абвов Алексей\Сталкер-2\Сталкер-2 2.txt
\А\Абвов Алексей\Сталкер-2\Сталкер-2 3.txt
\А\Абвов Алексей\Сталкер-2\Сталкер-2 4.txt

\А\Абвов Алексей\Третий шанс\1 Агент 000.txt
\А\Абвов Алексей\Третий шанс\2 Прораб стройки светлого будущего.txt

\А\Абвов Алексей\Цифровая крепость\1 Цифровая крепость.txt
\А\Абвов Алексей\Цифровая крепость\2 Цифровая крепость.txt
\А\Абвов Алексей\Цифровая крепость\3 Цифровая крепость.txt
\А\Абвов Алексей\Цифровая крепость\4 Цифровая крепость.txt

\А\Абвов Алексей\Черная полоса\Чёрная полоса 1.txt
\А\Абвов Алексей\Черная полоса\Черная полоса 2.txt

\А\Абвов Алексей\Что нас не убивает\1 Что нас не убивает.txt
\А\Абвов Алексей\Что нас не убивает\2 Испытание силой.txt

\А\Абдуллаев Чингиз\Дронго\001. Голубые ангелы .txt
\А\Абдуллаев Чингиз\Дронго\002. Почти невероятное убийство.txt
\А\Абдуллаев Чингиз\Дронго\003. Охота на человека.txt
\А\Абдуллаев Чингиз\Дронго\004. Игры профессионалов.txt
\А\Абдуллаев Чингиз\Дронго\005. В ожидании апокалипсиса.txt
\А\Абдуллаев Чингиз\Дронго\006. Правило профессионалов.txt
\А\Абдуллаев Чингиз\Дронго\007. Выбери себе смерть.txt
\А\Абдуллаев Чингиз\Дронго\008. Правила логики.txt
\А\Абдуллаев Чингиз\Дронго\009. Закон негодяев.txt
\А\Абдуллаев Чингиз\Дронго\010. Кредо негодяев.txt
\А\Абдуллаев Чингиз\Дронго\011. Совесть негодяев.txt
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2019, 06:48
Ответы с готовыми решениями:

Удаление файлов нулевого размера в каталогах и подкаталогах
Добрый вечер. Нужна помощь в корректировке маленького скрипта: @Echo Off SetLocal For /F...

Поиск файлов в каталогах и подкаталогах
Люди у меня есть своя база полноценных текстовых документов с каким-то названием. Нужено...

Поиск файлов в каталогах и подкаталогах
Как это можно реализовать? :)

Одинаковые файлы в каталогах и подкаталогах
Помогите пожалуйста реализовать: Задача Найти все группы одинаковых файлов ненулевой длины в...

Подключить все файлы, которые находятся в каталогах и подкаталогах
Добрый день.Подскажите,как написать рекурсивную функцию для подключения всех классов каталоге core...

9
bidstrup
308 / 128 / 19
Регистрация: 11.03.2018
Сообщений: 586
15.07.2019, 12:22 2
PowerShell
1
gci *.txt -rec | group Directory |% { $_.group.fullname; "`n" }
0
sotrudnik87
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 6
15.07.2019, 19:10  [ТС] 3
это надо добавить в мой батник? Какой строкой?

Добавлено через 33 минуты
разобрался! Все так просто, оказывается. Спасибо большое!!
Подскажи, пожалуйста. как убрать путь до файла до буквы "А"

E:\Папа\YandexDisk\Библиотека\Книги\А\Абвов Алексей\По следам алхимика\По следам Алхимика 1.txt
E:\Папа\YandexDisk\Библиотека\Книги\А\Абвов Алексей\По следам алхимика\По следам Алхимика 2.txt
E:\Папа\YandexDisk\Библиотека\Книги\А\Абвов Алексей\По следам алхимика\По следам Алхимика 3.txt


Чтоб в списке осталось так:
А\Абвов Алексей\По следам алхимика\По следам Алхимика 1.txt

Добавлено через 54 минуты
немного изменил твою команду.

gci *.txt -rec | group Directory |% { $_.group.fullname; "`n" } | Out-File -FilePath "Путь до папки\Название.txt"

теперь он не только показывает, но и сохраняет в нужную мне папку. Но вот решить ту проблему у меня не получается
0
bidstrup
308 / 128 / 19
Регистрация: 11.03.2018
Сообщений: 586
17.07.2019, 00:20 4
PowerShell
1
2
3
$c = [System.IO.Path]::DirectorySeparatorChar 
 
gci *.txt -rec | group Directory |% { $_.group.fullname.foreach({$_ -replace "^(.*$c)(?=(\p{L})$c\2)",$null}); "`n" }
Добавлено через 1 час 55 минут
так культурнее:
PowerShell
1
2
3
function showpath($path) { $c=[System.IO.Path]::DirectorySeparatorChar; $path -replace "^(.*$c)(?=(\p{L})$c\2)",$null }
 
gci *.txt -rec | group Directory |% { $_.group.fullname.foreach{showpath($_)}; "`n" }
1
17.07.2019, 00:20
YuS_2
Любознательный
1116 / 647 / 197
Регистрация: 10.03.2016
Сообщений: 1,497
17.07.2019, 08:42 5
Цитата Сообщение от bidstrup Посмотреть сообщение
так культурнее:
культурнее, но явно не проверено...
Цитата Сообщение от bidstrup Посмотреть сообщение
$c=[System.IO.Path]:irectorySeparatorChar; $path -replace "^(.*$c)(?=(\p{L})$c\2)",$null
- это проверялось на работоспособность?
надо бы удвоить, либо заэскейпить [regex]::escape($c)
1
bidstrup
308 / 128 / 19
Регистрация: 11.03.2018
Сообщений: 586
17.07.2019, 14:43 6
Лучший ответ Сообщение было отмечено YuS_2 как решение

Решение

Цитата Сообщение от YuS_2 Посмотреть сообщение
это проверялось на работоспособность?
Под Windows нет, конечно. Обратная палка сыграла злую шутку ?

Добавлено через 39 минут
PowerShell
1
2
function showpath($path) { $c=[System.IO.Path]::DirectorySeparatorChar; $path -replace "^(.*\${c})(?=(\p{L})\${c}\2)",$null }
gci *.txt -rec | group Directory |% { $_.group.fullname.foreach{showpath($_)}; "`n" }
1
YuS_2
17.07.2019, 15:46
  #7

Не по теме:

Цитата Сообщение от bidstrup Посмотреть сообщение
Под Windows нет, конечно.
Действительно, зачем под Windows проверять, решение опубликованное в разделе про windows :) шутка...
Но это даже не в windows проблема, это ведь регэкспы так работают, что "обратные палки" необходимо экранировать... впрочем, и не под виндой должно быть то же самое, ибо... ибо... :)

0
sotrudnik87
0 / 0 / 0
Регистрация: 06.02.2019
Сообщений: 6
17.07.2019, 17:24  [ТС] 8
Спасибо большое за помощь!! Все работает как часики! немножко изменил, добавил в конце команду Out-File -FilePath "Путь до папки\Название.txt" чтобы он готовый результат записывал в файл
Еще раз огромное спасибо!!
0
bidstrup
308 / 128 / 19
Регистрация: 11.03.2018
Сообщений: 586
17.07.2019, 17:29 9

Не по теме:

Цитата Сообщение от YuS_2 Посмотреть сообщение
Действительно, зачем под Windows проверять
Я не покупал ни Windows 7, ни Windows 8, ни Windows 10; установлен только мой старенький XP
под virtualbox, под ним чаще всего бессмысленно что-либо проверять.



Цитата Сообщение от YuS_2 Посмотреть сообщение
прочем, и не под виндой должно быть то же самое,
нет не то же самое, под *nix [System.IO.Path]::DirectorySeparatorChar вернёт прямой
слэш, поэтому всё работало и без экранирования. Опять моя ошибка, да.
2
YuS_2
17.07.2019, 19:20     Создание пробелов, интервала между каталогами, при создании списка файлов в каталогах и подкаталогах
  #10

Не по теме:

Цитата Сообщение от bidstrup Посмотреть сообщение
вернёт прямой
слэш, поэтому всё работало и без экранирования. Опять моя ошибка, да.
а, вон оно чо, тоды ой, естественно... прямой слэш - не помеха...
а ошибка - мелочь... не ошибается ведь только тот, кто ничего не делает.

0
17.07.2019, 19:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2019, 19:20
Привет! Вот еще темы с ответами:

Поиск строки с заменой в файлах, расположенных в различных каталогах и подкаталогах
Доброго времени суток! жизнь такую задачу поставила: есть каталог с подкаталогами, в них...

Запрет в заданных каталогах на создание файлов
Нужно запретить в заданных каталогах создавать новые файлы, копировать или перемещать в них уже...

Вывод списка имён каталогов и поиск в этих каталогах файлов с определёнными расширениями
Всем привет, прошу прощения , но в программировании я полный ноль, нужной мне инфы не нашел ( может...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru