我创建了一个我已添加到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
答案 0 :(得分:0)
您可以使用FOR /D
列出当前目录的子文件夹或FOR /D /R
(undocumented? /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文件时可能需要考虑%,这样您就不必处理特殊的批处理字符。