Category Archives: BATCH

Automatyczny eksport zawartości płyty CD na serwer FTP

Skrypt tworzy obraz płyty CD/DVD włożonej do napędu, następnie kompresuje go z hasłem i wysyła na serwer FTP.
W tym konkretnym przypadku skrypt został przygotowany dla lekarza, który ma za zadanie włożyć płytę z badaniem pacjenta do napędu a następnie uruchomić skrypt, który następnie przed wysłaniem badania na serwer zapyta go o dane pacjenta i hasło do kompresji.
Poniżej instrukcja oraz sam skrypt:
1) Przekopiować pliki i foldery: winscp, oscdimg.exe, 7zip do katalogu c:\Windows\
2) Sprawdzić literę napędu CD/DVD, jeżeli inna niż „E” należy poprawić w skrypcie;
3) Badania będą zapisywane na pulpicie (%USERPROFILE%\desktop\badania).
Continue reading

Pakowanie logów przy pomocy programu 7-zip

Poniższy skrypt pozwala na skompresowanie za pomocą programy 7-zip każdego pliku .txt znajdującego się w katalogu Logs osobno.

FOR %%i IN ("C:\Program Files (x86)\Syslogd\Logs\*.txt") DO (
"C:\Program Files (x86)\Syslogd\Logs\%%i.7z" %systemroot%\7zip\x64\7za.exe a -t7z "C:\Program Files (x86)\Syslogd\Logs\%%~ni.7z" -mx9 -aoa "%%i"
)

 

Windows command line ( CMD ) – data , data wczorajsza

Poniższy skrypt pozwala w systemie Windows wyświetlić bieżącą datę za pomocą linii poleceń (CMD):

for /f "tokens=1 delims=^/ " %%i in ('date /t') do set DWEEK=%%i
for /f "tokens=2 delims=^/ " %%i in ('date /t') do set DMDAY=%%i
for /f "tokens=3 delims=^/ " %%i in ('date /t') do set DMONT=%%i
for /f "tokens=4 delims=^/ " %%i in ('date /t') do set DYEAR=%%i
for /f "tokens=1 delims=^/^: " %%i in ('time /t') do set DHOUR=%%i
for /f "tokens=2 delims=^/^: " %%i in ('time /t') do set DMINU=%%i
rem for /f "tokens=1 delims=^/^: pa" %%i in ('time /t') do set DHOUR=%%i
rem for /f "tokens=2 delims=^/^: pa" %%i in ('time /t') do set DMINU=%%i
set DATE=%DYEAR%%DMONT%%DMDAY%%DWEEK%_%DHOUR%%DMINU%
ECHO %DATE%
pause

Poniższy skrypt pozwala w systemie Windows wyświetlić wczorajszą datę za pomocą linii poleceń (CMD):

@echo off

set yyyy=

set $tok=1-3
for /f "tokens=1 delims=.:/-, " %%u in ('date /t') do set $d1=%%u
if "%$d1:~0,1%" GTR "9" set $tok=2-4
for /f "tokens=%$tok% delims=.:/-, " %%u in ('date /t') do (
for /f "skip=1 tokens=2-4 delims=/-,()." %%x in ('echo.^|date') do (
set %%x=%%u
set %%y=%%v
set %%z=%%w
set $d1=
set $tok=))

if "%yyyy%"=="" set yyyy=%yy%
if /I %yyyy% LSS 100 set /A yyyy=2000 + 1%yyyy% - 100

set CurDate=%mm%/%dd%/%yyyy%
set dayCnt=%1

if "%dayCnt%"=="" set dayCnt=1

REM Substract your days here
set /A dd=1%dd% - 100 - %dayCnt%
set /A mm=1%mm% - 100

:CHKDAY
if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yyyy=%yyyy% - 1

:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
REM ** Month 12 falls through

:SET31
set /A dd=31 + %dd%
goto CHKDAY

:SET30
set /A dd=30 + %dd%
goto CHKDAY

:LEAPCHK
set /A tt=%yyyy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yyyy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yyyy% %% 400
if %tt%==0 goto SET29

:SET28
set /A dd=28 + %dd%
goto CHKDAY

:SET29
set /A dd=29 + %dd%
goto CHKDAY

:DONE
if /I %mm% LSS 10 set mm=0%mm%
if /I %dd% LSS 10 set dd=0%dd%

REM Set IIS and AWS date variables
set IISDT=%yyyy:~2,2%%mm%%dd%
set AWSDT=%yyyy%-%mm%-%dd%

ECHO %AWSDT%

 

 

Płatnik – automatyczna kopia bezpieczeństwa

W artykule przedstawione są dwie metody wykonywania automatycznych kopii bezpieczeństwa programu Płatnik. Pierwsza metoda dotyczy tworzenia kopii Płatnika, który używa bazy danych programu Access (w formacie .mdb). Druga metoda opisuje tworzenie kopii bezpieczeństwa Płatnika, który korzysta z bazy danych MS SQL Server 2008 R2 Express Edition.
W końcowej części artykułu przedstawione są sposoby przenoszenia wykonanych kopii na dysk sieciowy.

 

I Metoda – tworzenia kopii Płatnika, który używa bazy danych programu Access (w formacie .mdb). 

Należy utworzyć plik .cmd o następującej zawartości:

chcp 1250
date /T >> D:\kopie\kopiaPlatnik.log
copy "C:\ProgramData\Asseco Poland SA\Płatnik\Baza\platnik.mdb" D:\kopie

Komenda chcp 1250 jest bardzo istotna, ponieważ zmienia domyślną stronę kodową systemu Windows z 852 na 1250. Bez niej polecenie copy nie rozpoznałoby ścieżki dostępowej kopiowanego pliku, która zawiera polski znak „ł”.

 

II Metoda – tworzenie kopii bezpieczeństwa Płatnika, który korzysta z bazy danych MS SQL Server 2008 R2 Express Edition.

W tym celu należy utworzyć dwa pliki ze skryptami: jeden .cmd, który z odpowiednimi parametrami będzie uruchamiał drugi – właściwy skrypt SQL, wykonujący kopię bazy.

Należy utworzyć plik .cmd o następującej zawartości:

date /T >> D:\kopie\kopiaPlatnik.log
SQLCMD.EXE -S nazwaKomputera\nazwaInstalacjiSerweraSQL -U uzytkownik -P haslo -i D:\kopie\kopiaPlatnik.sql >> d:\kopie\kopiaPlatnik.log

Następnie należy utworzyć plik z rozszerzenie SQL np. D:\kopie\kopiaPlatnik.sql z zawartością:

DECLARE @name VARCHAR(50) -- database name 
DECLARE @path VARCHAR(256) -- path for backup files 
DECLARE @fileName VARCHAR(256) -- filename for backup 
DECLARE @fileDate VARCHAR(20) -- used for file name
 
-- specify database backup directory
SET @path = 'D:\kopie\' 
 
-- specify filename format

-- data w formacie nazwy dnia tygodnia: Monday, Tuesday itd.... 
-- jeśli chcemy uzyskać nazwę miesiąca zmieniamy dw na mm 
SELECT @fileDate = datename (dw, getdate())

-- data w formacie: RokMiesiącDzien_godzMinSek, np. platnik_20170309_134003.BAK
-- SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','') 

 
DECLARE db_cursor CURSOR FOR 
SELECT name 
FROM master.dbo.sysdatabases 
WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases
AND DATABASEPROPERTYEX(name, 'status') = 'ONLINE'
 
OPEN db_cursor 
FETCH NEXT FROM db_cursor INTO @name 
 
WHILE @@FETCH_STATUS = 0 
BEGIN 
 SET @fileName = @path + @name + '_' + @fileDate + '.BAK' 
 BACKUP DATABASE @name TO DISK = @fileName 
 
 FETCH NEXT FROM db_cursor INTO @name 
END


CLOSE db_cursor 
DEALLOCATE db_cursor

Tak powstanie plik o rozszerzeniu .BAK, zawierający w nazwie nazwę bazy, podkreślenie oraz dzień tygodnia. Skrypt można modyfikować tak, aby wygenerowany plik .BAK w nazwie zawierał datę i godzinę powstania (fragment kodu jest w powyższym skrypcie w komentarzu).

 

Sposoby przenoszenia wykonanych kopii na dysk sieciowy.

 

I Metoda – za pomocą programu WinSCP z wykorzystaniem protokołu SFTP.

Należy ściągnąć do np. c:\winscp program WinSCP w wersji portable z oficjalnej strony: https://winscp.net/

W zmiennych systemowych zmiennej Patch (po średniku) należy wpisać ścieżkę do programu WinSCP:

;c:\winscp;

Należy otworzyć program WinSCP. exe i połączyć się z dyskiem sieciowym przy pomocy protokołu SFTP, zapamiętując klucz rsa2 serwera.

Następnie należy utworzyć plik .cmd o następującej zawartości:

winscp.com /log=c:\WINSCP\winscp.log /command "open sftp://uzytkownikFTP:haslo@IPserweraFTP/" "synchronize remote d:\kopie/ /kopie/platnik/" "exit"

Aby kopie wykonywały się automatycznie, skrypty .cmd należy uruchamiać za pomocą harmonogramu zadań.

 

II Metoda – za pomocą programu Veeam Endpoint Backup FREE
https://www.veeam.com/endpoint-backup-resources.html

Jest to najlepsze rozwiązanie ponieważ:

  • jest to darmowy program firmy Veeam specjalizującej się w oprogramowaniu przeznaczonym do tworzenia kopii bezpieczeństwa;
  • każda kopia bezpieczeństwa posiada przeglądarkę plików. Program kopiuje pliki z nadmiarowością (sumami kontrolnymi), przez co kopia „jest pewniejsza”
  • posiada swój scheduler;
  • może przechowywać poświadczenia do zasobu. Program podmontowuje zasób tylko na czas tworzenia kopii. Po wykonaniu zadania zasób odłącza. Jest to bardzo dobre zabezpieczenie przez Cryptolockerami, które to często w pierwszym ruchu szyfrują zamontowane zasoby. Dobrą zasadą jest unikanie zapamiętywania poświadczeń w systemie Windows;
  • można ustawić liczbę kopii zapasowych (punktów przywracania);

 

ŻRÓDŁO:

https://www.mssqltips.com/sqlservertip/1070/simple-script-to-backup-all-sql-server-databases/

http://www.elektroda.pl/rtvforum/topic1198503.html

http://searchengines.pl/topic/105137-brak-polskich-liter-w-cmd/