Пакетный файл для поиска в каталоге для списка файлов и копирования в одну папку - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть файл .txt со списком файлов, которые находятся на сетевом диске (M :).Мне нужен командный файл, чтобы пройти по этому списку, найти файлы, которые находятся в подкаталогах одной папки на этом диске, а затем скопировать их в другую папку.Я попробовал довольно много решений без удачи.

текстовый файл представляет собой список файлов и расширений, т.е.

abc.step
afer.iges
ca76dc7d.sldprt

Вот то, что я пробовал до сих пор

@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
cls
set dest=C:\Users\kduquette.000\Desktop\Files 
for /f "TOKENS=*" %%f in (C:Desktop\Files\list.txt) do (
  set i=1
  for /f "tokens=*" %%F IN ('dir M: "%%~f"') Do (
    for %%N in ("%%F") Do (
      set name=%%~NN
      set ext=%%~XN
    )
    copy "%%~F" "%dest%\!name!_!i!!ext!"
    set /A i=!i!+1
  ) 
)
ENDLOCAL

1 Ответ

0 голосов
/ 20 февраля 2019

Мы можем просто проверить, существует ли файл, и скопировать его:

@echo off
set "dest=C:\Users\kduquette.000\Desktop\Files"
for /f "delims=" %%i in (C:\Desktop\Files\list.txt) do if exist "M:\Cads\%%i" echo copy "M:\Cads\%%i" "%dest%" 

Обратите внимание, сейчас я добавил echo в строку копирования, чтобы вы могли сначала проверить результат.После того, как вы довольны результатами, удалите echo

Если, однако, вы хотите искать файлы, рекурсивно по всему M:\ диску, тогда:

@echo off
set "dest=C:\Users\kduquette.000\Desktop\Files"
for /f "delims=" %%i in (C:\Desktop\Files\list.txt) do (
    pushd M:\
    for /f "delims=" %%a in ('dir /b /s "%%i"') do echo copy "%%~fa" "%dest%"
    popd
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...