Creating SharePoint webs with Excel and STSADM
This is a follow-up to my Site Definition Helper scripts post. As described in that post, we were looking at making it simple to create multiple webs. While you can use a site definition with a PortalProvisioningProvider to do this, if you have variations, you cannot use it since most of your webs will be under a variation and the provider doesn't create variations.
Before we were using Site Definitions, we had a nice STSADM extension that was creating webs + pages, repairing what it needed such as AvailablePageLayouts and WelcomePage parameters. Fortunately, a good Site Definition design made that obsolete except for creating the "starting webs" as well as for creating test pages (but you could still provision the test pages with a Site Definition anyway). Since we have Site Definitions, we should use the "STSADM -o CreateWeb" command since it's easy to use and it works fine.
The command requires the following parameters:
Ideally, it would be nice to have a nice Excel file that contains all of these in a much nicer table format than what you would get in a CMD file. And that's exactly what we did! The Excel contains the same columns that are required for the command to execute, we export it to an "Text (MS-DOS)" format (very important if you want your locale to work correctly), and then run a "For" loop in a CMD file that reads the exported TXT file :
1: FOR /F "eol=; tokens=1,2,3,4 delims= " %%i IN (Data/CreateWebs.txt) DO (
2: @ECHO ----[ Creating "%%i" ]--
3: %stsadm% -o createweb -url %url%%%i -sitetemplate %%j -title "%%k" -lcid %%l
Here's the complete script which requires the variable.cmd available on this post:
1: @ECHO OFF
2: cd /d %0\..
4: @CALL Variables.cmd
6: @ECHO %separator%
7: @ECHO Create Website Structure and Content.
8: @ECHO %separator%
12: @ECHO %separator%
13: @ECHO Create Site Structure
14: @ECHO %separator%
17: FOR /F "eol=; tokens=1,2,3,4 delims= " %%i IN (Data/CreateWebs.txt) DO (
18: @ECHO ----[ Creating "%%i" ]--
19: %stsadm% -o createweb -url %url%%%i -sitetemplate %%j -title "%%k" -lcid %%l
24: @ECHO %separator%
25: @ECHO Operation completed
26: @ECHO %separator%
28: IF NOT "%1"=="noie" start iexplore %url%
You can download all the scripts here :
Big thanks to Cristian Deschamps from Orckestra for the help on this. Happy web creation!