Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Bat для получения списка файлов каталога. (http://forum.oszone.net/showthread.php?t=265512)

Voron-orel 03-08-2013 12:57 2195615

Bat для получения списка файлов каталога.
 
В общем нужет bat который в txt выведет все содержимое каталога и подкаталогов.
Пример txt должен быть таким:
\1\1.mp3
\2\3\1.mp4
\2\1\1.m4a

Sphinx114 03-08-2013 13:20 2195625

Код:

@echo off
(for /f delims^= %%i in ('dir /b /s /a-d') do (
set "file=%%i"
call echo %%file:%cd%=%%
)) > list.txt


sergpro 11-08-2013 14:19 2199909

очень полезный скрипт, только что делать если он не отображает в нужной кодировке имена папок и файлов которые записываются в результате работы .bat

amel27 11-08-2013 14:49 2199920

Цитата:

Цитата sergpro
что делать если он не отображает в нужной кодировке »

перекодировать 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 2199987

спасибо всем!! только начал искать код и оказалось, что за час до этого уже выложили здесь =)
но лично мне надо было две задачи:
1. создать список с относительными путями, т.е. начинать не с буквы диска, а с места нахождения самого батника - ВЫПОЛНЕНО
2. по созданному списку удалить все файлы - найдено тут

но есть загвоздка - в файл-листе из здешней темы в начале каждой строки путь начинается со слеша
как убрать?? что бы путь начинался "папка\папка\файл.расширение" (ест-но без кавычек)))

sergpro 11-08-2013 18:30 2199997

спасибо большое) мне то лично помогло) а у меня есть такой ньюанс, что бы не создавать новую тему...как сделать скрипт который запускался бы скрыто, и копировал в нужную папку файлы с опрделённого раздела (флешки)

Sphinx114 11-08-2013 19:11 2200011

Цитата:

Цитата death7lord
но есть загвоздка - в файл-листе из здешней темы в начале каждой строки путь начинается со слеша
как убрать?? что бы путь начинался "папка\папка\файл.расширение" (ест-но без кавычек))) »

Код:

@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 12-08-2013 13:40 2200286

спасибо, а по моей просьбе нельзя со скриптиком помочь?((

amel27 12-08-2013 15:42 2200349

sergpro, совет: создайте отдельную тему и уточните ТЗ

lohmatiy 18-08-2014 11:40 2390676

А как добавить полный путь до файла? С диском чтобы. И записывать только *.xml файлы?

Iska 18-08-2014 14:36 2390755

Код:

>"list.txt" dir /b /s /a:-d "*.xml"

death7lord 26-04-2018 01:46 2810788

Доброго времени. На 1й странице отписывался уже, но прошло столько времени, что часть файлов давно утеряна...

Просьба банальная. В результате использования кода из сообщения 7 (или 4) имеем список файлов из папок и подпапок.

Задача 1. По заданному списку удалить только указанные там файлы. Т.е. он "черный список".
Задача 2. По заданному списку оставить только указанные там файлы. Т.е. он "белый список".

Желательно с\без удалением\я пустых папок. Все пути к файлам без указания дисков, т.к. и список и батник будут лежать в заглавном каталоге, выше которого "выходить" не нужно.
Касательно второй задачи - кто-то "переводит" файлы в скрытые\системные, удаляет содержимое папки, возвращает назад атрибуты файлам. А вдруг там изначально файлы с разными атрибутами?

p.s. Простите за попытку оживить "мертвого".

megaloman 26-04-2018 17:09 2810920

death7lord, Что в списоке файлов? Это только имена или с имена с путями? Приложите, пожалуйста, 2 примера этих разноцветных файлов.

death7lord 26-04-2018 21:00 2810954

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 2810973

1. удалить файлы из такого списка.
Cписок и батник будут лежать в заглавном каталоге, выше которого "выходить" не нужно.
Код:

@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 2810981

2. удалить все остальные кроме файлов из списка.
Cписок и батник будут лежать в заглавном каталоге, выше которого "выходить" не нужно.
Сам батник и файл-список удалены не будут
Код:

@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 2811890

megaloman, простите, начался новый сезон рискованного земледелия. Пока проверил второй код - работает. Спасибо!


Время: 13:10.

Время: 13:10.
© OSzone.net 2001-