Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] что бы с каждого компа в сети архивировалась раз в 2-3 дня папочка на сервер (http://forum.oszone.net/showthread.php?t=261606)

alexdomovoi 31-05-2013 14:24 2159894

что бы с каждого компа в сети архивировалась раз в 2-3 дня папочка на сервер
 
Товарищи нужно сделать так что бы с каждого компа в сети копировалась (архивировалась) раз в 2-3 дня папочка на сервер и при этом создавалась папка не по имени компа на сервере, а по ip адресу копируемого компьютера мне вроде дали скриптик но он не работает как то, что не так:

Dim FSO, WSH, TheFolder, TheFiles, AFile
Set WSH = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
foldername = "C:\Program Files\infotecs"
zipname = "C:\temp\if.zip"
str = "c:\7-zip\7z.exe a "& zipname & " " & foldername
strComputer = "."

Return = WSH.Run(str, 0, true)

If Return = 0 Then
Set fso = createobject ("scripting.filesystemobject")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = TRUE")
For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For Each IPAddress In IPConfig.IPAddress
strOutput = Replace(IPAddress, strComputer, "")
if fso.FolderExists("\\10.72.4.8\AD\1\" & strOutput) Then
WScript.Echo "Папка уже создана"
Else
fso.createfolder "\\10.72.4.8\AD\1\" & strOutput
End If
Set TheFolder = FSO.GetFolder("C:\temp\")
Set TheFiles = TheFolder.Files
For Each AFile In TheFiles
If UCase(FSO.GetExtensionName(AFile.Path)) = "ZIP" Then
AFile.COPY "\\10.72.4.8\AD\1\" & strOutput &"\"
End If
Next
Next
End If
Next
End If


папка temp есть
папка с архиватором 7-zip так же имеется
папка с тем что копировать есть
папка куда копировать так же есть
что еще надо?

sunnykey 03-06-2013 07:19 2161165

Код:

@echo off
SetLocal EnableExtensions EnableDelayedExpansion
rem Замени пути на свои
set ZipPath="C:\Program Files\7-Zip\7z.exe"
set ServerPath=\\192.168.25.245\it\test
set Folder2BackUp="d:\work\"
rem !!!!!!!!!!!!!!!!!!
if exist %tmp%\%ipAddress%.zip (
        del /q %tmp%\%ipAddress%.zip
)
if exist %tmp%\tmp.tmp (
        del /q %tmp%\tmp.tmp
)
netsh interface ipv4 show addresses | find  "IP-" | find /v "127.0.0.1" >%tmp%\tmp.tmp
for /f "tokens=2" %%i in (%tmp%\tmp.tmp) do set ipAddress=%%i

%ZipPath% a %tmp%\%ipAddress%.zip %Folder2BackUp%
if not exist "%ServerPath%" (
        md "%ServerPath%"
)
copy /y /z %tmp%\%ipAddress%.zip "%ServerPath%\"
del /q %tmp%\tmp.tmp
del /q %tmp%\%ipAddress%.zip
echo Done!

Как-то так

alexdomovoi 03-06-2013 09:58 2161220

сделал так

@echo off
SetLocal EnableExtensions EnableDelayedExpansion
rem Замени пути на свои
set ZipPath="C:\Program Files\7-Zip\7z.exe"
set ServerPath=\\10.72.4.8\ad\1
set Folder2BackUp="C:\Program Files\InfoTeCS\"
rem !!!!!!!!!!!!!!!!!!
if exist %tmp%\%ipAddress%.zip (
del /q %tmp%\%ipAddress%.zip
)
if exist %tmp%\tmp.tmp (
del /q %tmp%\tmp.tmp
)
netsh interface ipv4 show addresses | find "IP-" | find /v "127.0.0.1" >%tmp%\tmp.tmp
for /f "tokens=2" %%i in (%tmp%\tmp.tmp) do set ipAddress=%%i

%ZipPath% a %tmp%\%ipAddress%.zip %Folder2BackUp%
if not exist "%ServerPath%" (
md "%ServerPath%"
)
copy /y /z %tmp%\%ipAddress%.zip "%ServerPath%\"
del /q %tmp%\tmp.tmp
del /q %tmp%\%ipAddress%.zip
echo Done!

выдает при запуске

Iska 03-06-2013 10:50 2161260

alexdomovoi, Вам давно пора познакомиться с тэгом [code].

Цитата:

Цитата alexdomovoi
выдает при запуске »

Это пакетный файл, а не скрипт WSH. Поменяйте расширение с «vbs» на «cmd». И сохраняйте в кодировке OEM/866, если используется кириллица.

alexdomovoi 03-06-2013 11:59 2161302

в принципе работает, НО создается архив с не с именем ip адреса (допустим ip 192.168.1.1 нужно имя архива 19216811), а просто %ipAddress%.zip

а вообще было бы прерасно если бы создавалась папочка с ip адресом а уже в нее клались архивы по дате

alexdomovoi 03-06-2013 13:32 2161362

удалил, вопрос выше остается открыт

sunnykey 03-06-2013 15:23 2161443

Цитата:

Цитата alexdomovoi
в принципе работает, НО создается архив с не с именем ip адреса (допустим ip 192.168.1.1 нужно имя архива 19216811), а просто %ipAddress%.zip
а вообще было бы прерасно если бы создавалась папочка с ip адресом а уже в нее клались архивы по дате »

Код:

@echo off
setlocal enableextensions enabledelayedexpansion
rem Замени пути на свои
set ZipPath="C:\Program Files\7-Zip\7z.exe"
set ServerPath=\\10.72.4.8\ad\1
set Folder2BackUp="C:\Program Files\InfoTeCS\"
rem !!!!!!!!!!!!!!!!!!
for /f %%i in ('date /t') do set CurDate=%%i
if exist %tmp%\%CurDate%.zip (
        del /q %tmp%\%CurDate%.zip
)
if exist %tmp%\tmp.tmp (
        del /q %tmp%\tmp.tmp
)
netsh interface ipv4 show addresses | find  "IP-" | find /v "127.0.0.1" >%tmp%\tmp.tmp
for /f "tokens=2" %%i in (%tmp%\tmp.tmp) do (
        set ipAddress=%%i
)
set endPath=%ServerPath%\%ipAddress%
%ZipPath% a %tmp%\%CurDate%.zip %Folder2BackUp%
if not exist "%endPath%" (
        md "%endPath%"
)
copy /y /z %tmp%\%CurDate%.zip "%endPath%\"
del /q %tmp%\tmp.tmp
del /q %tmp%\%CurDate%.zip
echo Done!

Создаёт на сервере папку с ip адресом, а в неё копируется архив.
З.Ы. Не забудь сохранить файл с расширением cmd

alexdomovoi 03-06-2013 15:37 2161450

что то не так в конце

Код:

Compressing  InfoTeCS\ViPNet CryptoService\vipnetln.prg

Everything is Ok
if not exist "%endPath%" (
Продолжить? "Application Data"md "%endPath%"
Продолжить? )
""Application Data"md" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
copy /y /z %tmp%\%CurDate%.zip "%endPath%\"
Системе не удается найти указанный путь.
Скопировано файлов:        0.
del /q %tmp%\tmp.tmp
del /q %tmp%\%CurDate%.zip
echo Done!


sunnykey 04-06-2013 02:43 2161832

Цитата:

Цитата alexdomovoi
Продолжить? "Application Data"md "%endPath%"
Продолжить? ) »

Это откуда у тебя в скрипте? Скопируй правильно текст!

alexdomovoi 04-06-2013 09:43 2161911

скопировал
Код:

@echo off
setlocal enableextensions enabledelayedexpansion
rem Замени пути на свои
set ZipPath="C:\Program Files\7-Zip\7z.exe"
set ServerPath=\\10.72.4.8\ad\1\
set Folder2BackUp="C:\Program Files\InfoTeCS\"
rem !!!!!!!!!!!!!!!!!!
for /f %%i in ('date /t') do set CurDate=%%i
if exist %tmp%\%CurDate%.zip (
        del /q %tmp%\%CurDate%.zip
)
if exist %tmp%\tmp.tmp (
        del /q %tmp%\tmp.tmp
)
netsh interface ipv4 show addresses | find  "IP-" | find /v "127.0.0.1" >%tmp%\tmp.tmp
for /f "tokens=2" %%i in (%tmp%\tmp.tmp) do (
        set ipAddress=%%i
)
set endPath=%ServerPath%\%ipAddress%
%ZipPath% a %tmp%\%CurDate%.zip %Folder2BackUp%
if not exist "%endPath%" (
        md "%endPath%"
)
copy /y /z %tmp%\%CurDate%.zip "%endPath%\"
del /q %tmp%\tmp.tmp
del /q %tmp%\%CurDate%.zip
echo Done!

идет копирование из папки инфотекс
но в конце выдает
Код:

Compressing  InfoTeCS\ViPNet CryptoService\user_0257\key_disk\dom\has
Compressing  InfoTeCS\ViPNet CryptoService\user_0257\key_disk\dom\sgn

Compressing  InfoTeCS\ViPNet CryptoService\Version.ini
Compressing  InfoTeCS\ViPNet CryptoService\VIPNETLN.CRG
Compressing  InfoTeCS\ViPNet CryptoService\vipnetln.prg

Everything is Ok
if not exist "%endPath%" (
Продолжить? "Application Data"md "%endPath%"
Продолжить? )
""Application Data"md" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
copy /y /z %tmp%\%CurDate%.zip "%endPath%\"
Системе не удается найти указанный путь.
Скопировано файлов:        0.
del /q %tmp%\tmp.tmp
del /q %tmp%\%CurDate%.zip
echo Done!


Georgio 04-06-2013 10:15 2161932

alexdomovoi, попробуйте подправить скрипт sunnykey таким образом:

Код:

@echo off
setlocal enableextensions enabledelayedexpansion
rem Замени пути на свои
set ZipPath="C:\Program Files\7-Zip\7z.exe"
set ServerPath=\\10.72.4.8\ad\1
set Folder2BackUp="C:\Program Files\InfoTeCS\"
rem !!!!!!!!!!!!!!!!!!
for /f %%i in ('date /t') do set CurDate=%%i
if exist "%tmp%\%CurDate%.zip" (
        del /q "%tmp%\%CurDate%.zip"
)
if exist "%tmp%\tmp.tmp" (
        del /q "%tmp%\tmp.tmp"
)
netsh interface ipv4 show addresses | find  "IP-" | find /v "127.0.0.1" >"%tmp%\tmp.tmp"
for /f "usebackq tokens=2" %%i in ("%tmp%\tmp.tmp") do (
        set ipAddress=%%i
)
set endPath=%ServerPath%\%ipAddress%
%ZipPath% a "%tmp%\%CurDate%.zip" %Folder2BackUp%
if not exist "%endPath%" (
        md "%endPath%"
)
copy /y /z "%tmp%\%CurDate%.zip" "%endPath%\"
del /q "%tmp%\tmp.tmp"
del /q "%tmp%\%CurDate%.zip"
echo Done!


alexdomovoi 04-06-2013 10:22 2161939

опять не так
Код:

Compressing  InfoTeCS\ViPNet CryptoService\VIPNETLN.CRG
Compressing  InfoTeCS\ViPNet CryptoService\vipnetln.prg

Everything is Ok
if not exist "%endPath%" (
Продолжить? "Application Data"md "%endPath%"
Продолжить? )
""Application Data"md" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
copy /y /z "%tmp%\%CurDate%.zip" "%endPath%\"
Системе не удается найти указанный путь.
Скопировано файлов:        0.
del /q "%tmp%\tmp.tmp"
del /q "%tmp%\%CurDate%.zip"
echo Done!


alexdomovoi 04-06-2013 10:44 2161946

все пошло, только папочку не создалась по ip адресу

Georgio 04-06-2013 10:59 2161952

alexdomovoi, выложите результат выполнения в командной строке команды:
Код:

netsh interface ipv4 show addresses
.

alexdomovoi 04-06-2013 11:23 2161962

Код:

C:\Documents and Settings\admdom>netsh interface ipv4 show addresses
Команда interface ipv4 show addresses не найдена.

машина на xp sp3

Georgio 04-06-2013 12:51 2162012

Тогда надо использовать альтернативную команду. Например, чтобы получился тот же реэультат, что и в предложенной sunnykey конструкции (с моей правкой)
Код:

netsh interface ipv4 show addresses | find  "IP-" | find /v "127.0.0.1" >"%tmp%\tmp.tmp"
for /f "usebackq tokens=2" %%i in ("%tmp%\tmp.tmp") do (
        set ipAddress=%%i
)

, попробуйте вместо неё использовать конструкцию
Код:

ipconfig|find  "IPv4-">"%tmp%\tmp.tmp"
for /f "usebackq tokens=2 delims=:" %%i in ("%tmp%\tmp.tmp") do (
 set _ipAddress=%%i
)
set ipAddress=%_ipAddress:~1%

Можно было и обойтись без tmp.tmp.

alexdomovoi 04-06-2013 14:33 2162064

создалась папочка вот такая ~1 в ней архивный файл, тема с ip не раскрыта.

Georgio 04-06-2013 15:39 2162092

alexdomovoi, теперь выложите результат выполнения в командной строке команды:
Код:

ipconfig
.

alexdomovoi 05-06-2013 08:13 2162507

DNS-суффикс этого подключения . . :
IP-адрес . . . . . . . . . . . . : 10.72.4.198
Маска подсети . . . . . . . . . . : 255.255.255.0
Основной шлюз . . . . . . . . . . : 10.72.4.1

alexdomovoi 06-06-2013 09:04 2163092

подниму подскажите

alexdomovoi 07-06-2013 09:50 2163617

вопрос решен

On Error Resume Next
Set WshShell = CreateObject("WScript.Shell")
Set objShellApp = CreateObject("Shell.Application")

katalog = ""
if len (Month(Now))= 1 then katalog = katalog & "0" & Month(Now)
if len (Month(Now))= 2 then katalog = katalog & Month(Now)
if len (Day(Now))=1 then katalog = katalog & "0" & Day(Now)
if len (Day(Now))=2 then katalog = katalog & Day(Now)
katalog = Year(Now) & katalog

commanda = "C:\Progra~1\7-Zip\7z.exe a -tzip \\Dc2-db\copy_vipnet\%COMPUTERNAME%\" & katalog & ".zip -ssw ""C:\Program Files\InfoTeCS\"""
WshShell.Run commanda, 1, 1

Iska 07-06-2013 11:02 2163650

Цитата:

Код:

if len (Month(Now))= 1 then katalog = katalog & "0" & Month(Now)
if len (Month(Now))= 2 then katalog = katalog & Month(Now)
if len (Day(Now))=1 then katalog = katalog & "0" & Day(Now)
if len (Day(Now))=2 then katalog = katalog & Day(Now)
katalog = Year(Now) & katalog


Можно проще:
Код:

dtNow = Now()

WScript.Echo CStr(Year(dtNow)) & Right("00" & CStr(Month(dtNow)), 2) & Right("00" & CStr(Day(dtNow)), 2)


alexdomovoi 10-06-2013 10:53 2165246

можно только помощи так и не дождался

Iska 10-06-2013 11:02 2165250

Цитата:

Цитата alexdomovoi
только помощи так и не дождался »

«Вы хотите поговорить об этом?» :lol:


Время: 22:36.

Время: 22:36.
© OSzone.net 2001-