Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
2 / 2 / 2
Регистрация: 28.09.2015
Сообщений: 286

Рекурсивный поиск файлов по списку с последующим перемещением найденых в единую папку

25.11.2015, 10:46. Показов 4561. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите, пожалуйста, как можно найти файлы в каталоге (который я укажу) и во всех его каталогов/подкаталогов, а потом переместить все эти найденные файлы в одну папку (которую я укажу). Список файлов находится в тхт файле (в столбик, с расширением)

Мы указываем путь, где нужно искать файлы (включая каталоги/подкаталоги):
Code
1
C:\OneDrive\work\NewsMaker
Указываем файл old.txt в котором находится имена файлов, которые прописаны с расширением в столбик.

Указываем папку в которую нужно переместить все найденные файлы:

Code
1
C:\OneDrive\work\NewsMaker\MOVE
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.11.2015, 10:46
Ответы с готовыми решениями:

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

Поиск и выделение найденых ячеек с последующим выполнением программы
Всем доброго времени суток. Суть проблемы такова: надо данные со столбца V и W вставить в столбцы A и B (A и V хранят одинаковые значения)...

Сравнение даты изменения 2-ух файлов с перемещением нового в другую папку
Здравствуйте, есть cmd скрипт который закачивает файлы из интернета через wget, затем копирует в рабочую папку и очищает временную...

6
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
25.11.2015, 12:52
Общий принцип:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@echo off
  setlocal
    set "i=0"
    for %%i in (%*) do set /a "i+=1"
    if "%i%" neq "3" echo:Index is out of range.&goto:eof
    
    set "lst=%1"
    set "src=%2"
    set "des=%3"
    for %%i in (%lst% %src% %des%) do (
      if not exist "%%~fi" (
        echo:One or more argument is wrong.&goto:eof
      )
    )
    for /f %%i in (
      'find /c /v "" ^< %lst%'
    ) do set "i=%%i"
    for /l %%i in (1, 1, %i%) do (
      for /f "tokens=2 delims=:" %%j in (
        'findstr /vn "`" %lst% ^| findstr /brc:"^%%i:"'
      ) do (
        for /f "tokens=*" %%k in ('dir /s /b "%src%\%%j"') do (
          copy "%%k" "%des%"
        )
      )
    )
  endlocal
exit /b
0
2 / 2 / 2
Регистрация: 28.09.2015
Сообщений: 286
25.11.2015, 14:21  [ТС]
вот так подставил, но что - то вроде я не то сделал:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@echo off
  setlocal
    set "i=0"
    for %%i in (%*) do set /a "i+=1"
    if "%i%" neq "3" echo:Index is out of range.&goto:eof
    
    set "lst=ras.txt"
    set "src=C:\OneDrive\work\NewsMaker"
    set "des=C:\OneDrive\work\NewsMaker\MOVE"
    for %%i in (%lst% %src% %des%) do (
      if not exist "%%~fi" (
        echo:One or more argument is wrong.&goto:eof
      )
    )
    for /f %%i in (
      'find /c /v "" ^< %lst%'
    ) do set "i=%%i"
    for /l %%i in (1, 1, %i%) do (
      for /f "tokens=2 delims=:" %%j in (
        'findstr /vn "`" %lst% ^| findstr /brc:"^%%i:"'
      ) do (
        for /f "tokens=*" %%k in ('dir /s /b "%src%\%%j"') do (
          copy "%%k" "%des%"
        )
      )
    )
  endlocal
exit /b
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
25.11.2015, 14:45
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
  setlocal
    set "lst=ras.txt"
    set "src=C:\OneDrive\work\NewsMaker"
    set "des=C:\OneDrive\work\NewsMaker\MOVE"
    for /f %%i in (
      'find /c /v "" ^< %lst%'
    ) do set "i=%%i"
    for /l %%i in (1, 1, %i%) do (
      for /f "tokens=2 delims=:" %%j in (
        'findstr /vn "`" %lst% ^| findstr /brc:"^%%i:"'
      ) do (
        for /f "tokens=*" %%k in ('dir /s /b "%src%\%%j') do (
          copy "%%k" "%des%"
        )
      )
    )
  endlocal
exit /b
0
2 / 2 / 2
Регистрация: 28.09.2015
Сообщений: 286
25.11.2015, 15:30  [ТС]
Вот так сделал:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
  setlocal
    set "lst=C:\OneDrive\work\new\restore image\ras.txt"  (тут находится список имен файлов)
    set "src=C:\OneDrive\work\NewsMaker"                    (тут папка/подпапки в которой нужно искать)
    set "des=C:\OneDrive\work\NewsMaker\MOVE"           (сюда нужно перемещать)
    for /f %%i in (
      'find /c /v "" ^< %lst%'
    ) do set "i=%%i"
    for /l %%i in (1, 1, %i%) do (
      for /f "tokens=2 delims=:" %%j in (
        'findstr /vn "`" %lst% ^| findstr /brc:"^%%i:"'
      ) do (
        for /f "tokens=*" %%k in ('dir /s /b "%src%\%%j') do (
          copy "%%k" "%des%"
        )
      )
    )
  endlocal
exit /b

содержимое ras.txt:
Code
1
2
3
4
0001swl_m.jpg
0001swl_t.jpg
0002swl_m.jpg
0002swl_t.jpg
эти файлы есть в папке:
Code
1
C:\OneDrive\work\NewsMaker\ThumbsFiles\start\
Скрипт выполняется быстро... промелькнуло и все.. в папке MOVER файлы не появились
0
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
25.11.2015, 15:36
У Вас пробел в пути до файла-списка, поэтому либо:
Windows Batch file
1
2
3
...
set lst="C:\OneDrive\work\new\restore image\ras.txt"
...
Либо:
Windows Batch file
1
2
3
...
'findstr /vn "`" "%lst%" ^| findstr /brc:"^%%i:"'
...
Ну и разрешения на запись в папке назначения проверьте.
0
2 / 2 / 2
Регистрация: 28.09.2015
Сообщений: 286
25.11.2015, 17:16  [ТС]
Выбрал первый вариант:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
  setlocal
    set lst="C:\OneDrive\work\new\restore image\ras.txt"
    set src="C:\OneDrive\work\NewsMaker"
    set des="C:\OneDrive\work\NewsMaker\MOVE"
    for /f %%i in (
      'find /c /v "" ^< %lst%'
    ) do set "i=%%i"
    for /l %%i in (1, 1, %i%) do (
      for /f "tokens=2 delims=:" %%j in (
        'findstr /vn "`" %lst% ^| findstr /brc:"^%%i:"'
      ) do (
        for /f "tokens=*" %%k in ('dir /s /b "%src%\%%j') do (
          copy "%%k" "%des%"
        )
      )
    )
  endlocal
exit /b
Но к сожалению также осталось.. промелькнуло и все. Ставлю pause перед exit, все равно промелькнуло, не дав ничего прочитать.

если pause ставить выше строки
Windows Batch file
1
for /l %%i in (1, 1, %i%) do (
то, окно не исчезает, просто написано, нажмите любую клавишу.
Если ставлю pause ниже этой строчки, то окно мелькает и все. Ведь такое вряд ли может быть.. не может за долю секунды найтись файлы и переместиться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.11.2015, 17:16
Помогаю со студенческими работами здесь

Поиск файлов и копирование найденых
Доброго времени суток! Требуется ваша помощь, нужно реализовать поиск файлов во всём компьютере в целом (т.е на всех дисках, папках и...

Поиск файлов по списку из файла
Добрый день! Есть задача: Имеется папка XML с кучей вложенных подпапок (уровень вложения не менее 3, т.е....

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

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

Рекурсивный поиск файлов
Приветствую. Есть вот такая рабочая функция: function Scan($dir) { if (!preg_match(&quot;/\.$/&quot;,$dir)){ if (is_file($dir))...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru