Показать полную графическую версию : [решено] Bat для получения списка файлов каталога.
Voron-orel
03-08-2013, 12:57
В общем нужет bat который в txt выведет все содержимое каталога и подкаталогов.
Пример txt должен быть таким:
\1\1.mp3
\2\3\1.mp4
\2\1\1.m4a
Sphinx114
03-08-2013, 13:20
@echo off
(for /f delims^= %%i in ('dir /b /s /a-d') do (
set "file=%%i"
call echo %%file:%cd%=%%
)) > list.txt
очень полезный скрипт, только что делать если он не отображает в нужной кодировке имена папок и файлов которые записываются в результате работы .bat
что делать если он не отображает в нужной кодировке »перекодировать list.txt из OEM (866) в нужную кодировку =)
например, для ANSI (1251):
@echo off
chcp 1251
(for /f delims^= %%i in ('dir /b /s /a-d') do (
set "file=%%i"
call echo %%file:%cd%=%%
)) > list.txt
death7lord
11-08-2013, 18:05
спасибо всем!! только начал искать код и оказалось, что за час до этого уже выложили здесь =)
но лично мне надо было две задачи:
1. создать список с относительными путями, т.е. начинать не с буквы диска, а с места нахождения самого батника - ВЫПОЛНЕНО
2. по созданному списку удалить все файлы - найдено тут (http://operafan.net/forum/index.php?topic=18384.msg159402#msg159402)
но есть загвоздка - в файл-листе из здешней темы в начале каждой строки путь начинается со слеша
как убрать?? что бы путь начинался "папка\папка\файл.расширение" (ест-но без кавычек)))
спасибо большое) мне то лично помогло) а у меня есть такой ньюанс, что бы не создавать новую тему...как сделать скрипт который запускался бы скрыто, и копировал в нужную папку файлы с опрделённого раздела (флешки)
Sphinx114
11-08-2013, 19:11
но есть загвоздка - в файл-листе из здешней темы в начале каждой строки путь начинается со слеша
как убрать?? что бы путь начинался "папка\папка\файл.расширение" (ест-но без кавычек))) »
@echo off
chcp 1251
if not "%cd:~-1%"=="\" set "cd=%cd%\"
(for /f delims^= %%i in ('dir /b /s /a-d') do (
set "file=%%i"
call echo %%file:%cd%=%%
)) > list.txt
спасибо, а по моей просьбе нельзя со скриптиком помочь?((
sergpro, совет: создайте отдельную тему и уточните ТЗ
lohmatiy
18-08-2014, 11:40
А как добавить полный путь до файла? С диском чтобы. И записывать только *.xml файлы?
>"list.txt" dir /b /s /a:-d "*.xml"
death7lord
26-04-2018, 01:46
Доброго времени. На 1й странице отписывался уже, но прошло столько времени, что часть файлов давно утеряна...
Просьба банальная. В результате использования кода из сообщения 7 (или 4) имеем список файлов из папок и подпапок.
Задача 1. По заданному списку удалить только указанные там файлы. Т.е. он "черный список".
Задача 2. По заданному списку оставить только указанные там файлы. Т.е. он "белый список".
Желательно с\без удалением\я пустых папок. Все пути к файлам без указания дисков, т.к. и список и батник будут лежать в заглавном каталоге, выше которого "выходить" не нужно.
Касательно второй задачи - кто-то "переводит" файлы в скрытые\системные, удаляет содержимое папки, возвращает назад атрибуты файлам. А вдруг там изначально файлы с разными атрибутами?
p.s. Простите за попытку оживить "мертвого".
megaloman
26-04-2018, 17:09
death7lord, Что в списоке файлов? Это только имена или с имена с путями? Приложите, пожалуйста, 2 примера этих разноцветных файлов.
death7lord
26-04-2018, 21:00
megaloman, имена с неполными путями. Например, вот результат работы кода из 7го сообщения (сам список чуть уменьшен для наглядности):
.bat
list.txt
MemTest86_User_Guide_UEFI.pdf
ISO\Memtest86-7.4-pro.iso
ISO\readme.txt
USB\imageUSB.exe
USB\memtest86-pro-usb.img
USB\readme.txt
USB\ReadMe_imageUSB.txt
USB\Help\HTML\cicon9.gif
USB\Help\HTML\cicon_loadindex_ani.gif
USB\Help\HTML\contacting_passmark_software.htmХотелось бы два развития - 1. удалить файлы из такого списка, 2. удалить все остальные кроме файлов из списка. Два разных кода!
megaloman
26-04-2018, 23:40
@Echo Off
Set "SpisDel=Список удаления.txt"
>nul 2>&1 (
FOR /F "usebackq delims=" %%f IN ("%SpisDel%") DO If Exist "%%f" Del /A:R /A "%%f"
rem Если надо убить пустые папки
For /F "usebackq delims=" %%d In (`Dir /B /S /A:D 2^>nul^|Sort /R`) Do RD "%%d"
)
megaloman
27-04-2018, 02:02
@Echo Off
Set "Exclude=NoDelete.txt"
If Not Exist "%Exclude%" Exit /B 2
>"~%Exclude%" (
FOR /F "usebackq delims=" %%f IN ("%Exclude%") DO (Echo :%%f)
(Echo :%Exclude%)
(Echo :~%Exclude%)
(Echo :%~nx0)
)
>nul 2>&1 (
FOR /F "usebackq delims=" %%f IN (`XCOPY "*.*" "%Tmp%\" /L /S /H /EXCLUDE:~%Exclude%`) DO Del /A:R /A "%%~dpnxf"
Del "~%Exclude%"
rem Если надо убить пустые папки
For /F "usebackq delims=" %%d In (`Dir /B /S /A:D 2^>nul^|Sort /R`) Do RD "%%d"
)
death7lord
03-05-2018, 13:08
megaloman, простите, начался новый сезон рискованного земледелия. Пока проверил второй код - работает. Спасибо!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.