#windows #batch-file #cmd #copy #xcopy
Вопрос:
Я пытаюсь запустить летучую мышь, чтобы скопировать все файлы в list.txt. в папку назначения, не копируя папки, в которых находятся файлы, и я не могу заставить его работать правильно.
@ECHO OFF
CHCP 65001 > NUL
FOR /F "usebackq delims=" %%I IN ("C:UsersAdminDesktopTest Copy batchList.txt") DO (
xcopy /S "C:UsersAdminDesktopTest Copy batchSource%%I" "C:UsersAdminDesktopTest Copy batchDestination%%I*"
)
pause
Он читает List.txt файл для получения списка имен файлов.
Перейдите в исходную папку и выполните поиск по всем подкаталогам в поисках этих имен.
Скопируйте их и вставьте в папку назначения.
Но я хочу, чтобы скопированные файлы находились в одной единственной папке.
Ответ №1:
Позвольте другому for /F
циклу вместе с where
получением каждого исходного файла и используйте copy
его для копирования в плоскую структуру каталогов:
@echo off
for /F usebackq^ delims^=^ eol^= %%I in ("C:UsersAdminDesktopTest Copy batchList.txt") do (
for /F "delims= eol=|" %%S in ('set "PATHEXT=" ^amp; 2^> nul where /R "C:UsersAdminDesktopTest Copy batchSource" "%%I"') do (
copy "%%~S" "C:UsersAdminDesktopTest Copy batchDestination%%~nxS"
)
)
PATHEXT
Переменная временно очищается перед выполнением where
команды, так как она будет учитывать ее и, следовательно, может дополнительно возвращать нежелательные файлы.