Exportiert die Freigaben von Server1 und kopiert auf  Server2 eine cmd-Datei, mit dem diese sofort wiederhergestellt werden können, wobei davon ausgegangen wird, dass die Pfade auf den Servern identisch sind!

Gedacht für einen Standby-Server, der die Daten von Server1 kopiert hat.

Dazu sollte auch das Script move_home_profile.cmd beachtet werden! 

@echo off
setlocal
set DEBUG=on
rem ******************************************************************
rem *** ShareExport.cmd                                            ***
rem ***                                                            ***
rem *** Exportiert die Freigaben eines Servers                     ***
rem ***                                                            ***
rem ******************************************************************
rem *** Verfasser: Juergen Etterer (DIGITAL LABS.)                 ***
rem ***                                                            ***
rem ***  Versions-Historie:                                        ***
rem ***    0.1 16.09.2004 J.Ett. Grundidee                         ***
rem ***                                                            ***
rem ******************************************************************

set STARTFILE=%~n0
rem *** WORKPATH enthält den Pfad, in dem dieses Script liegt
set WORKPATH=%~dp0
rem *** Das ERRORFLAG wird gesetzt, sobald EIN Fehler aufgetreten ist!
set ERRORFLAG=ok

call :GENTIMESTAMP
rem echo DATESTAMP:%DATESTAMP%
rem echo TIMESTAMP:%TIMESTAMP%

set SRCSRV=%1
set DESSRV=Server2
if .%SRCSRV%==. set /p SRCSRV="Servername(SRC): "

rem call :PFC1
if %ERRORFLAG% NEQ ok call :ERROROUT & goto :EOF

call :COPYSHARES

echo.
echo '%SHARESCRIPT%' erzeugt.
echo.

endlocal
pause
goto :EOF


rem -----------------------------------------------------------------------
:PFC1
if %DEBUG%==on echo [DBG] %0
if not exist %WORKPATH%..\bin\rmtshare.exe set ERRORFLAG=bin\rmtshare.exe
goto :EOF

rem -----------------------------------------------------------------------
:COPYSHARES
rem *** Erzeugt ein Script, mit dessen Hilfe die Freigaben automatisch erzeugt werden
rem set SHARESCRIPT=%WORKPATH%CreateShares_%SRCSRV%_%DATESTAMP%_%TIMESTAMP%.cmd
set SHARESCRIPT=\\%DESSRV%\D$\CreateShares_%DESSRV%.cmd
if exist %SHARESCRIPT% del %SHARESCRIPT%
echo rem *** %SHARESCRIPT% erzeugt %DATESTAMP% %TIMESTAMP% ***>>%SHARESCRIPT%
call :GETSHARES
if exist shares.tmp del shares.tmp
goto :EOF

rem -----------------------------------------------------------------------
:GETSHARES
if %DEBUG%==on echo [DBG] %0
if exist shares.tmp del shares.tmp
for /F "skip=4 tokens=1,2" %%i in ('rmtshare.exe \\%SRCSRV%') do call :CHECKSHARE "%%i" "%%j"
goto :EOF

rem -----------------------------------------------------------------------
:CHECKSHARE
if %1=="The" if %2=="command" goto :EOF
if %DEBUG%==on echo [DBG]   %0 %1 %2
set WORKSHARE=%1
if "%WORKSHARE:~2,1%"=="$" goto :EOF
if %WORKSHARE%=="IPC$" goto :EOF
if %WORKSHARE%=="ADMIN$" goto :EOF
if %WORKSHARE%=="NETLOGON" goto :EOF
if %WORKSHARE%=="SYSVOL" goto :EOF
if %WORKSHARE%=="Resources$" goto :EOF
if /I %WORKSHARE%=="%SRCSRV%.LOG" goto :EOF
if %WORKSHARE%=="print$" goto :EOF

set WORKSHARE=%WORKSHARE:"=%
echo *** %WORKSHARE% ***
rem echo %WORKSHARE%>shares.tmp
rem type shares.tmp
rem pause
call :PARSESHARE %WORKSHARE%
goto :EOF

rem -----------------------------------------------------------------------
:PARSESHARE
if %DEBUG%==on echo [DBG]   %0 %1
rem set WORKSHARE=%1
rmtshare.exe \\%SRCSRV%\%WORKSHARE%>shares2.tmp
if exist sharerights.tmp del sharerights.tmp
rem *** Holen wir mal den vollen Pfad ab...
for /F "tokens=1*" %%i in ('findstr /B /C:Path shares2.tmp') do set SHAREPATH=%%j
rem *** dann ziehen wir die Berechtigungen raus
for /F "tokens=1,2 skip=6 delims=: " %%i in (shares2.tmp) do call :EXTRACTRIGHTS "%%i" "%%j"
if exist shares2.tmp del shares2.tmp
set RIGHTS=
for /F "tokens=1,2" %%i in (sharerights.tmp) do call :BUILDGRANT %%i %%j
echo %WORKPATH%bin\rmtshare.exe \\%DESSRV%\%WORKSHARE%="%SHAREPATH%" /UNLIMITED %RIGHTS% >>%SHARESCRIPT%
if exist sharerights.tmp del sharerights.tmp
goto :EOF

rem -----------------------------------------------------------------------
:EXTRACTRIGHTS
if %1=="The" if %2=="command" goto :EOF
if %DEBUG%==on echo [DBG]     %0 %1 %2 %3 %4
set WORKUSER=%1
set WORKUSER=%WORKUSER:"=%
if "%WORKUSER:~0,13%"=="VORDEFINIERT\" set WORKUSER=%WORKUSER:~13%
if %WORKUSER%==\Jeder set WORKUSER=Jeder
set WORKRIGHTS=%2
if %WORKRIGHTS%=="<unknown" set WORKRIGHTS=READ
set WORKRIGHTS=%WORKRIGHTS:"=%
echo %WORKUSER%:%WORKRIGHTS%>>sharerights.tmp
goto :EOF

rem -----------------------------------------------------------------------
:BUILDGRANT
if %DEBUG%==on echo [DBG]     %0 %1 %2
set RIGHTS=%RIGHTS%/GRANT %1 %2
goto :EOF


:GENTIMESTAMP
rem **************************************************************************
rem *** Generiert Datum und Uhrzeit in umgekehrter Notation                ***
rem **************************************************************************
for /F "tokens=1,2 delims= " %%i in ('date /t') do call :BUILDDATESTAMP %%i %%j
for /F "tokens=1,2,3 delims=: " %%i in ('time /t') do call :BUILDTIMESTAMP=%%i %%j %%k
goto :EOF

:BUILDDATESTAMP
rem **************************************************************************
rem *** Baut das Datum zusammen (Fallunterschiedung Deutsch / Englisch)    ***
rem **************************************************************************
if .%2==. (set ANLAYSEDATE=%1) else (set ANLAYSEDATE=%2)
if .%ANLAYSEDATE:~2,1%==./ for /F "tokens=1,2,3 delims=/" %%i in ("%ANLAYSEDATE%") do set DATESTAMP=%%k%%i%%j
if .%ANLAYSEDATE:~2,1%==.. for /F "tokens=1,2,3 delims=." %%i in ("%ANLAYSEDATE%") do set DATESTAMP=%%k%%j%%i
goto :EOF

:BUILDTIMESTAMP
rem **************************************************************************
rem *** Baut die Uhrzeit zusammen (Fallunterscheidung Deutsch / Englisch)  ***
rem **************************************************************************
set TIMEHH=%1
set TIMEMM=%2
set TIMEAP=%3
if .%TIMEMM:~2,1% NEQ . set TIMEAP=%TIMEMM:~2,1%& set TIMEMM=%TIMEMM:~0,2%
if .%TIMEHH:~1,1%==.  set TIMEHH=0%TIMEHH%
set TIMESTAMP=%TIMEAP%%TIMEHH%%TIMEMM%
set TIMESTAMP=%TIMESTAMP: =%
goto :EOF