Как получить список файлов и папок только тех папок, которые перечислены в текстовом файле, в файл списка? - PullRequest
0 голосов
/ 30 сентября 2018

Я создал командный файл для экспорта всех файлов, папок и подпапок в указанном каталоге в текстовый файл.Что мне нужно, это перечислить конкретные файлы с подпапками из текстового файла, который включает их путь.Пакетный файл будет перечислять файлы и подпапки, только включенные в этот текстовый файл.Например, мне нужно экспортировать в текстовый файл только файлы из этих папок, как во входном текстовом файле.

C:\Users\Username\Documents\test1
C:\Users\Username\Documents\test2
C:\Users\Username\Documents\test3
C:\Users\Username\Documents\test4

Заранее спасибо.

Отредактировано, чтобы добавить больше деталей;обычно мы используем эту команду для вывода списка всех файлов в каталоге:

dir > output.txt

Я хочу применить другой подход.Я хотел бы перечислить файлы в определенных каталогах только для того, чтобы текстовый файл включал эти конкретные пути к каталогам.

Это текстовый файл:

C:\Users\Username\Documents\myfolder1
C:\Users\Username\Documents\myfolder2
C:\Users\Username\Downloads\yet another folder

Хотя в Документах много других папоки Загрузки, только файлы в папках, пути которых указаны в моем входном текстовом файле.Затем все вложенные папки и файлы myfolder1, myfolder2 и yet another folder будут отправлены в выходной текстовый файл.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Этот очень простой пакетный файл можно использовать для этой задачи:

@echo off
rem First check existence of folders list file and exit
rem batch file execution if this file does not exist.

if not exist "%UserProfile%\Documents\FoldersList.txt" goto :EOF

rem Delete output list file if already existing from a previous execution.
rem The error message output on file not existing is suppressed by
rem redirecting it from handle STDERR (standard error) to device NUL.

del "%UserProfile%\Documents\OutputList.txt" 2>nul

rem For each folder path in folders list file run the command DIR to output
rem in bare format all files and folders including hidden files and folders
rem in the folder and all its subfolders with redirecting the output written
rem to handle STDOUT (standard output) to the output list file with appending
rem the new lines at end of the list file. The list file is automatically
rem created on first line written to the output list file.

for /F "usebackq eol=| delims=" %%I in ("%UserProfile%\Documents\FoldersList.txt") do dir "%%~I\*" /A /B /S >>"%UserProfile%\Documents\OutputList.txt"

Создается просто список файлов без папок с заменой опции DIR /A на /A-D что означает любой атрибут, кроме каталога атрибутов.Это было бы то же самое, что и для последней командной строки, с той разницей, что файлы со скрытым набором атрибутов не выводятся внутренними FOR :

for /F "usebackq eol=| delims=" %%I in ("%UserProfile%\Documents\FoldersList.txt") do for /R "%%~I" %%J in (*) do echo %%J>>"%UserProfile%\Documents\OutputList.txt"

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

  • del /?
  • dir /?
  • echo /?
  • for /?
  • rem /?

См. Также статью Microsoft о Использование операторов перенаправления команд .

0 голосов
/ 02 октября 2018

Прочитайте файл, содержащий имена папок и список файлов в каждой из этих папок и их подпапок:

@echo off
for /f "delims=" %%a in (file.txt) do dir /s /b "%%a\*"

Адаптируйте переключатели dir и маску файла к вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...