问题描述
||
我想知道是否可以为to0ѭ(目标系统:MS Windows 2k3)编写批处理脚本,以便执行以下操作:
让我们有一个文件夹“ѭ1”,其中包含许多文件和目录。某些子目录(处于不同级别)可能称为“ 2”。我想创建一个文件夹
rootfolder2
,复制rootfolder
的目录树结构,但只包含文件夹dirname
及其内容。我也想在ѭ3中复制相同文件夹后删除它们
例:
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
致谢:递归重命名文件名+带有批处理文件的文件夹名
解决方法
这是我的问题的答案,仅使用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
学分至:
用批处理文件递归重命名文件名+文件夹名
这样就完成了!