[Batch/CMD] Батник по копированию папки в другую папку

  • Автор темы Автор темы Mart1z
  • Дата начала Дата начала

Переводчик Google

Статус
В этой теме нельзя размещать новые ответы.

Mart1z

Участник
Сообщения
53
Реакции
0
Батник, который бы копировал папку steamvr по пути \Half-Life 2 VR\hlvr\cfg\ в папку cfg по пути \Half-Life 2 VR\episodicvr\cfg\
 
Батник, который бы копировал папку steamvr по пути \Half-Life 2 VR\hlvr\cfg\ в папку cfg по пути \Half-Life 2 VR\episodicvr\cfg\
Для копирования папки steamvr по указанному пути в другую папку cfg по указанному пути можно использовать следующий bat-скрипт:

Код:
xcopy /E /I /Y "Half-Life 2 VR\hlvr\cfg\steamvr" "Half-Life 2 VR\episodicvr\cfg\"

Эта команда использует команду xcopy, которая копирует содержимое указанной папки и всех ее подпапок (/E) с сохранением их структуры (/I) в другую папку, причем без запроса подтверждения (/Y) для каждого файла.
 
Папка steamvr не копируется по данному скрипту.
 
Папка steamvr не копируется по данному скрипту.
Приношу свои извинения за ошибочный скрипт, попробуйте использовать следующий вариант:

Код:
xcopy /E /I /Y "Half-Life 2 VR\hlvr\cfg\steamvr\." "Half-Life 2 VR\episodicvr\cfg\steamvr\."

В этом скрипте использована директива ".", которая означает, что необходимо скопировать все файлы и подпапки из папки steamvr, а не саму папку steamvr.

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

Код:
@echo off
setlocal

set "source_folder=C:\path\to\source\folder"
set "destination_folder=%~dp0"

for /R "%source_folder%" %%F in (*) do (
    set "file_path=%%~F"
    setlocal enabledelayedexpansion
    set "new_name=!file_path:%source_folder%=!"
    set "new_name=!new_name:\=_!"
    set "new_name=!new_name:~1!"
    if "%%~aF"=="d" (
        mkdir "%destination_folder%!new_name!"
    ) else (
        copy "%%F" "%destination_folder%!new_name!"
    )
    endlocal
)

endlocal

В этом скрипте также необходимо заменить C:\path\to\source\folder на путь к исходной папке, из которой вы хотите скопировать файлы и каталоги.

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

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