2

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

学分转到:递归重命名文件名+带有批处理文件的文件夹名称

4

1 回答 1

0

这是使用简单的 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

学分转到: 递归重命名文件名+带有批处理文件的文件夹名称

这样就搞定了!

于 2015-09-27T18:32:36.140 回答