Мне интересно, можно ли написать пакетный скрипт для CMD.EXE
(Целевая система: MS Windows 2k3) для выполнения следующих действий:
Пусть у нас будет папка rootfolder
, содержащая много файлови каталоги.Некоторые из подкаталогов (на разных уровнях) могут называться dirname
.Я хотел бы создать папку rootfolder2
, копирующую структуру дерева каталогов rootfolder
, но содержащую только папки dirname
с их содержимым.Я также хотел бы удалить те же папки после их копирования в rootfolder2
Пример:
rootfolder
`- dir1
`- dir2
`- filew
`- dirname
`- filey
`- dirname
`- file1
`- dirx
`- file2
`- filez
И вывод, который я ищу, будет:
rootfolder
`- dir1
`- dir2
`- filew
`- filez
rootfolder2
`- dir2
`- dirname
`- filey
`- dirname
`- file1
`- dirx
`- file2
Могу ли я сделать это без необходимости писать консольное приложение на C / C ++ / Java / и т.д.
Заранее спасибо, Джо
Вот ответ на мой вопросиспользуя просто xcopy и пакетный сценарий:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set StartDir=Folder1
set BackupDir=Folder1 BK
mkdir "%BackupDir%"
call :ProcessDir "%StartDir%"
exit /b 0
:ProcessDir
echo Processing directory "%~1"
for /f "delims=" %%d in ('dir /ad /b "%~1"2^>nul') do (
if "%%d"=="foldername" (
xcopy /s /e /i "%~1\%%d" "%BackupDir%\%~1\%%d"
rmdir /S /Q "%~1\%%d"
) else (
call :ProcessDir "%~1\%%~d"
)
)
exit /b 0
кредиты идут на: рекурсивное переименование имен файлов + имена папок с пакетным файлом