如何使用现有文件夹层次结构作为模板来创建具有相同层次结构的新文件夹?

时间:2017-01-19 17:37:15

标签: right-click windows-explorer directory-structure create-directory

我创建了一个我已添加到Windows注册表的工作脚本。当一个人右键单击Windows资源管理器时,他们可以单击“创建新作业文件夹”,创建一个具有指定层次结构的新文件夹,但它会询问用户该文件夹的名称。

我正在尝试弄清楚如何编辑当前脚本以根据特定文件夹创建层次结构。这个文件夹基本上是一个模板,所以当我更新文件夹结构以更好地满足我的需求时,我使用脚本创建的每个后续文件夹都将反映这些更改。在此先感谢您的帮助!

以下是我目前工作脚本中的内容:

    set verbose=NO
    @echo off

    set mydir = %cd%
    cd %mydir%
    cls

    call:main
    goto:eof

    :main
    set /p job=Enter Job Name:

    call:check

    if %choice%==2 (echo Creating folder. Please Wait... & timeout 1 > nul & 

    call:createDirectory)
    goto main

    :check
    echo[
    if exist "%job%" (echo ERROR: Folder already exists. Please choose a different name. 
    & set choice=1) else (set choice=2)
    echo[
    exit /b

    :createDirectory
    md "%job%"

    md "%job%"\1.Development
    md "%job%"\1.Development\1.Budgets
    md "%job%"\1.Development\2.Manufacturers

    md "%job%"\"2.Plans and Specs"
    md "%job%"\"2.Plans and Specs"\1.Plans
    md "%job%"\"2.Plans and Specs"\2.Specs

    md "%job%"\3.Pricing
    md "%job%"\3.Pricing\1.Quotes
    md "%job%"\3.Pricing\2.Worksheets

    md "%job%"\4.Sumbittals
    md "%job%"\4.Sumbittals\"1.Submittal Reviews"

    md "%job%"\5.Orders
    md "%job%"\5.Orders\"1.Order Summaries"
    md "%job%"\5.Orders\"2.Confirmation Pages"

    md "%job%"\6.Closeout
    md "%job%"\6.Closeout\"1.O&M Manuals"
    md "%job%"\6.Closeout\2.Warranty

    exit

1 个答案:

答案 0 :(得分:0)

您可以使用FOR /D列出当前目录的子文件夹或FOR /D /Rundocumented? /r flag)以递归方式列出当前目录中的所有子文件夹。

@echo off
setlocal
set base=c:\mytemplatedir
set mydir=%cd%
goto main

:enumdir
pushd "%base%\%~1\%~2"
for /D %%a in (*) do (
    md "%mydir%\%~1\%~2\%%~a"
    call :enumdir "%~1\%~2" "%%~a"
)
popd
@goto :EOF

:main
call :enumdir . .

或者您可以使用FOR /R遍历文件夹(*)或文件夹(.)的文件夹树。

如果您知道您的模板文件夹可能包含&,!或者在名称中使用.vbs文件时可能需要考虑%,这样您就不必处理特殊的批处理字符。