我想知道是否可以为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