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



我创建了一个工作脚本,并已添加到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.Development1.Budgets
    md "%job%"1.Development2.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.Pricing1.Quotes
    md "%job%"3.Pricing2.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.Closeout2.Warranty
    exit
您可以使用

FOR /D列出当前目录的子文件夹,也可以使用FOR /D /R(未记录的?/r 标志)递归列出当前目录中的所有子文件夹。

@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 文件,这样就不必处理特殊的批处理字符。

相关内容

  • 没有找到相关文章

最新更新