2

CMD.EXE(ターゲットシステム:MS Windows 2k3)のバッチスクリプトを記述して、次のことを実行できるかどうか疑問に思っています。

rootfolderたくさんのファイルやディレクトリを含むフォルダを作りましょう。一部のサブディレクトリ(さまざまなレベル)は、と呼ばれる場合がありますdirnamerootfolder2のディレクトリツリー構造をコピーしてフォルダを作成したいのですが、その内容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 / etcでコンソールアプリケーションを作成せずにこれを行うことはできますか?

よろしくお願いします、ジョー


単純な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 に答える