Как скопировать файл из неизвестной папки с помощью команды Windows

Как скопировать файл из папки с неизвестными именами при помощи командной строки

Существует множество задач, при выполнении которых необходимо скопировать файл из нескольких уровней папок с непредсказуемыми именами. Если вы оказались в ситуации, где вам нужно скопировать файл из указанной структуры папок, но не знаете точные имена этих папок, вы попали по адресу. В этой статье мы рассмотрим несколько способов сделать это с помощью различных инструментов: cmd.exe, PowerShell и Bash.

Использование cmd.exe для копирования файлов

Командная строка Windows (cmd.exe) позволяет управлять файлами и папками, но имеет свои ограничения. В частности, подстановочные символы можно использовать только в последнем элементе пути, что может затруднить доступ к файлам в глубоко вложенных папках.

Чтобы найти и скопировать файл file.txt из структуры папок, зная, что он находится по пути вида Inbox\XXX\YYY, можно использовать команду where /R, которая позволяет выполнять поиск по директории:

for /f "delims=" %f in ('where /R Inbox file.txt') do copy "%f" C:\Target\

Эта команда найдет файл в подпапках и скопирует его в целевую директорию C:\Target\.

Чтобы избежать ошибки, если в папках имеется несколько файлов с одинаковым именем, мы можем написать небольшой скрипт в формате .BAT:

REM copy-nested-unique.bat

cd Inbox
for /f "delims=" %%i in ('dir /b /a-d /s "file.txt"') do (
    copy "%%i" C:\Target\
    cd ..
    exit /b
)

Такой подход позволяет переключиться к нужной папке и осуществить поиск, скопировав первый найденный файл, после чего скрипт завершит выполнение.

Копирование файлов с помощью PowerShell

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

Используя PowerShell, вы можете выполнить следующую команду:

Copy-Item -Path 'Inbox\*\*\file.txt' C:\Target\

Эта команда копирует файл file.txt, находящийся в любой подпапке XXX\YYY, в директорию C:\Target\, что делает её решением номер один для тех, кто работает с PowerShell.

Как использовать Bash для копирования файлов

Если вы используете Bash, например, через BusyBox на Windows, процесс копирования файла также становится простым. Bash поддерживает неподстановочные символы аналогично PowerShell. Вот пример команды, которая это делает:

busybox64u.exe bash -c 'cp "Inbox/*/*/file.txt" C:/Target/'

Эта команда копирует все file.txt, которые находятся в директории Inbox и любая глубина вложенности */*.

Заключение

Копирование файлов из папок с неизвестными именами может быть простой задачей, если использовать правильные инструменты. В данной статье мы рассмотрели три метода: командная строка Windows (cmd.exe), PowerShell и Bash. Выбор инструмента зависит от вашего опыта и предпочтений, но каждая из предложенных стратегий работает эффективно в своей среде.

Источник

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *