Скрипт VB(vbs)..Help me!

Alexsz

Здравствуйте!Помогите пожалуйста написать скрипт (vb,vbs) при условиях: Есть общая папка(INOUT), в нее пользователи копируют разную инфу (файлопомойка), в корне этой папки лежит файл txt (можно сделать и папку), который гласит: что каждое воскресенье из этой папки(INUOT)будут уничтожатся все файлы,как предупреждение. Этот файл(папку) убивать будет нельзя.НУЖНО чтобы эта папка скриптом копировалась (каждое воскр.) на сервер, после копирования в папке INOUT должно быть пусто(данные уничтожаются) (за исключением 1 файла с предупреждением).При копировании если скрипт находит в месте назначения папку INOUT то скрипт создает новую папку INOUT_01 и сливает в нее все данных с папки INOUT(т.е. с файлопомойки). Цикл работы скрипта 3 недели, соотв. скрипт должен будет создать за 3 недели 3 папки: INOUT(заполнена на первой неделе),INOUT_01 (заполнена на второй неделе),INOUT_02 (заполнена на третей неделе). VB,VBS я знаю оч плохо, начальство попросило сделать до завтра, Если будут предложения с радостью приму их! :)
21 ответ

Alexsz

тут в принципе и срипт не нуженхватит и простого BAT-файлавопрос, чот делать после третьей недели?I Have Nine Lives You Have One OnlyTHINK!


Alexsz

dim pathFrom, pathTo
pathFrom = "c:\INOUT"
pathTo = "d:\" 

Set fso=CreateOject("Scripting.FilesystemObject")
x = <b>1</b>
While fso.FolderExists(pathTo & "INOUT_" & x)
 x = x +<b>1</b>
Wend
fso.CreateFolder pathTo & "INOUT_" & x
For Each f in fso.GetFolder(pathFrom).SubFolders
 f.Move pathTo & "INOUT_" & x
Next
For Each f in fso.GetFolder(pathFrom).Files
 If f.Name<>"файл.txt" then f.Move pathTo & "INOUT_" & x
Next
Вопросы? Jah loves you.


Alexsz

Antonariy,Все наверно прекрасно! а как это прикрутить чтобы это висело в AD (нужно чтобы логон выполнлся), скорее всего здесь нужно vbs?


Alexsz

dim pathFrom, pathTo
pathFrom = "c:\INOUT"
pathTo = "d:\" 

Set fso=CreateOject("Scripting.FilesystemObject")
x = <b>1</b>
While fso.FolderExists(pathTo & "INOUT_" & x)
 x = x +<b>1</b>
Wend
fso.CreateFolder pathTo & "INOUT_" & x
For Each f in fso.GetFolder(pathFrom).SubFolders
 f.Move pathTo & "INOUT_" & x
Next
For Each f in fso.GetFolder(pathFrom).Files
 If f.Name<>"файл.txt" then f.Move pathTo & "INOUT_" & x
Next
Вопросы? Jah loves you.
При выполнении пишет что "файл уже существует" (строка 15,символ5).. как починить?


Alexsz

Нужно этот текст скопировать в vbs-файл а файл повесить в шедулер. Jah loves you.


Alexsz

Нужно этот текст скопировать в vbs-файл а файл повесить в шедулер. Jah loves you.
Скопировал, набил папку INOUT файлами, запускаю скрипт - ошибка! Скрипт говорит что "файл уже существует",строка 12 символ5.. Знаю что руки у меня кривые, но все же, где косячу?


Alexsz

При выполнении пишет что "файл уже существует" (строка 15,символ5).. как починить?
Вообще-то там наполовину не правильно.
dim pathFrom, pathTo
pathFrom = "C:\Shared\OpusOS"
pathTo = "f:\" 

Set fso=CreateObject("Scripting.FilesystemObject")
x = <b>1</b>
While fso.FolderExists(pathTo & "INOUT_" & x)
 x = x +<b>1</b>
Wend
fso.CreateFolder pathTo & "INOUT_" & x
fso.MoveFolder pathFrom, pathTo & "INOUT_" & x


Alexsz

Вернее даже так:
dim pathFrom, pathTo
pathFrom = "c:\INOUT"
pathTo = "f:\" 

Set fso=CreateObject("Scripting.FilesystemObject")
x = <b>1</b>
While fso.FolderExists(pathTo & "INOUT_" & x)
 x = x +<b>1</b>
Wend
fso.CreateFolder pathTo & "INOUT_" & x
fso.CopyFolder pathFrom, pathTo & "INOUT_" & x
fso.DeleteFolder pathFrom
При Move у меня почему-то выдает "Разрешение отклонено". Jah loves you.


Alexsz

Вообще-то там наполовину не правильно.
dim pathFrom, pathTo
pathFrom = "C:\Shared\OpusOS"
pathTo = "f:\" 

Set fso=CreateObject("Scripting.FilesystemObject")
x = <b>1</b>
While fso.FolderExists(pathTo & "INOUT_" & x)
 x = x +<b>1</b>
Wend
fso.CreateFolder pathTo & "INOUT_" & x
fso.MoveFolder pathFrom, pathTo & "INOUT_" & x
Злостная ошибка в новой версии осталась, "файл уже существует", строка 11,символ1.Скрипт в этом виде создает папку INOUT_1, но не копирует в нее ничего :( и в папке источнике ничего не удаляет :( Есть варианты? :(


Alexsz

Блин, вот, что значит думать руками, а не головой…
dim pathFrom, pathTo
pathFrom = "C:\INOUT"
pathTo = "f:\" 

Set fso=CreateObject("Scripting.FilesystemObject")
x = <b>1</b>
While fso.FolderExists(pathTo & "INOUT_" & x)
 x = x +<b>1</b>
Wend
fso.CreateFolder pathTo & "INOUT_" & x
fso.CopyFolder pathFrom, pathTo & "INOUT_" & x
For Each f in fso.GetFolder(pathFrom).SubFolders
 f.Delete
Next
For Each f in fso.GetFolder(pathFrom).Files
 If f.Name<>"файл.txt" then f.Delete
Next
Jah loves you.


Alexsz

Вернее даже так:
dim pathFrom, pathTo
pathFrom = "c:\INOUT"
pathTo = "f:\" 

Set fso=CreateObject("Scripting.FilesystemObject")
x = <b>1</b>
While fso.FolderExists(pathTo & "INOUT_" & x)
 x = x +<b>1</b>
Wend
fso.CreateFolder pathTo & "INOUT_" & x
fso.CopyFolder pathFrom, pathTo & "INOUT_" & x
fso.DeleteFolder pathFrom
При Move у меня почему-то выдает "Разрешение отклонено". Jah loves you.
У меня скрипт сработал, но, папку источник скрипт переименовал в 5INOUT_1, в папке назначения ничего не произошло.. (не создалась папка).. :%


Alexsz

Блин, вот, что значит думать руками, а не головой…
dim pathFrom, pathTo
pathFrom = "C:\INOUT"
pathTo = "f:\" 

Set fso=CreateObject("Scripting.FilesystemObject")
x = <b>1</b>
While fso.FolderExists(pathTo & "INOUT_" & x)
 x = x +<b>1</b>
Wend
fso.CreateFolder pathTo & "INOUT_" & x
fso.CopyFolder pathFrom, pathTo & "INOUT_" & x
For Each f in fso.GetFolder(pathFrom).SubFolders
 f.Delete
Next
For Each f in fso.GetFolder(pathFrom).Files
 If f.Name<>"файл.txt" then f.Delete
Next
Jah loves you.
ВЫ МОСХ! сработало! (на первый взгляд). Кажется Все работает!!! :) :) :)


Alexsz

Блин, вот, что значит думать руками, а не головой…
dim pathFrom, pathTo
pathFrom = "C:\INOUT"
pathTo = "f:\" 

Set fso=CreateObject("Scripting.FilesystemObject")
x = <b>1</b>
While fso.FolderExists(pathTo & "INOUT_" & x)
 x = x +<b>1</b>
Wend
fso.CreateFolder pathTo & "INOUT_" & x
fso.CopyFolder pathFrom, pathTo & "INOUT_" & x
For Each f in fso.GetFolder(pathFrom).SubFolders
 f.Delete
Next
For Each f in fso.GetFolder(pathFrom).Files
 If f.Name<>"файл.txt" then f.Delete
Next
Jah loves you.
Эм... а файл "Файл.txt" поидее должен быть в папке источнике.. А скрипт его переносит в папку INOUT_1... Можно это починить?


Alexsz

Эм... а файл "Файл.txt" поидее должен быть в папке источнике.. А скрипт его переносит в папку INOUT_1... Можно это починить?
Вру, работает все! Файл с большой буквы написал) Ураа!


Alexsz

Блин, вот, что значит думать руками, а не головой…
dim pathFrom, pathTo
pathFrom = "C:\INOUT"
pathTo = "f:\" 

Set fso=CreateObject("Scripting.FilesystemObject")
x = <b>1</b>
While fso.FolderExists(pathTo & "INOUT_" & x)
 x = x +<b>1</b>
Wend
fso.CreateFolder pathTo & "INOUT_" & x
fso.CopyFolder pathFrom, pathTo & "INOUT_" & x
For Each f in fso.GetFolder(pathFrom).SubFolders
 f.Delete
Next
For Each f in fso.GetFolder(pathFrom).Files
 If f.Name<>"файл.txt" then f.Delete
Next
Jah loves you.
Вопрос, а нельзя сделать, чтобы после INOUT_3 скрипт перезатирал INOUT_1? Чтобы цикл был.. :(


Alexsz

dim pathFrom, pathTo
pathFrom = "C:\INOUT"
pathTo = "f:\" 
dim dates(<b>3</b>)

Set fso=CreateObject("Scripting.FilesystemObject")
x = <b>1</b>
While fso.FolderExists(pathTo & "INOUT_" & x)
 Set f = fso.GetFolder(pathTo & "INOUT_" & x) 
 dates(x) = f.DateCreated
 x = x +<b>1</b>
Wend

If x = <b>4</b> then
 d = Now
 For y=<b>1</b> to <b>3</b>
 If dates(y)<d then 
 d = dates(y)
 x = y
 end if
 next
 fso.DeleteFolder pathTo & "INOUT_" & x
end if

fso.CreateFolder pathTo & "INOUT_" & x
fso.CopyFolder pathFrom, pathTo & "INOUT_" & x
For Each f in fso.GetFolder(pathFrom).SubFolders
 f.Delete
Next
For Each f in fso.GetFolder(pathFrom).Files
 If f.Name<>"файл.txt" then f.Delete
Next
Теперь будет затирать самую старую папку из трех существующих.


Alexsz

dim pathFrom, pathTo
pathFrom = "C:\INOUT"
pathTo = "f:\" 
dim dates(<b>3</b>)

Set fso=CreateObject("Scripting.FilesystemObject")
x = <b>1</b>
While fso.FolderExists(pathTo & "INOUT_" & x)
 Set f = fso.GetFolder(pathTo & "INOUT_" & x) 
 dates(x) = f.DateCreated
 x = x +<b>1</b>
Wend

If x = <b>4</b> then
 d = Now
 For y=<b>1</b> to <b>3</b>
 If dates(y)<d then 
 d = dates(y)
 x = y
 end if
 next
 fso.DeleteFolder pathTo & "INOUT_" & x
end if

fso.CreateFolder pathTo & "INOUT_" & x
fso.CopyFolder pathFrom, pathTo & "INOUT_" & x
For Each f in fso.GetFolder(pathFrom).SubFolders
 f.Delete
Next
For Each f in fso.GetFolder(pathFrom).Files
 If f.Name<>"файл.txt" then f.Delete
Next
Теперь будет затирать самую старую папку из трех существующих.
Работает, а можно внести файлик текстовый (лог), в котором будут отображаться результаты действий? (перемещение, копирование, владелец папки)?


Alexsz

> Автор: Alexsz> Antonariy> Работает, а можно внести файлик текстовый (лог), в котором будут отображаться результаты действий? (перемещение, > копирование, владелец папки)?Аппетит пришел во время еды


Alexsz

> Автор: Alexsz> > Antonariy>> Работает, а можно внести файлик текстовый (лог), в котором будут отображаться результаты действий? > (перемещение, копирование, владелец папки)?А обыкновенный настроенный аудит не сойдет?


Alexsz

> Автор: Alexsz> > Antonariy>> Работает, а можно внести файлик текстовый (лог), в котором будут отображаться результаты действий? > (перемещение, копирование, владелец папки)?А обыкновенный настроенный аудит не сойдет?
:) Мне бы подошел, а вот начальству :( хочется лог в тхт файле видеть...:(


Alexsz

Спасибо всем кто помогал мне! Вот итог стараний: :)dim pathFrom, pathTopathFrom = "C:\test\INOUT"pathTo = "C:\" PapkaDlyaLogov = "C:\test\3"dim dates(3)Set fso=CreateObject("Scripting.FilesystemObject")Set WshNetwork = CreateObject("WScript.Network")Set LogFile = FSO.OpenTextFile(PapkaDlyaLogov & "\copy.log", 8, True) '===создаю лог файл==='LogFile.WriteLine Now If Not FSO.FolderExists(pathFrom) Then '===запись в лог файл==='LogFile.WriteLine Now & ", " & WshNetwork.ComputerName & ", " & WshNetwork.UserName & _": Каталог " & pathFrom & " не существует."If Not FSO.FolderExists(pathTo) Then '===запись в лог файл==='LogFile.WriteLine Now & ", " & WshNetwork.ComputerName & ", " & WshNetwork.UserName & _": Каталог " & pathTo & " не существует."LogFile.CloseEnd ifEnd ifx = 1While fso.FolderExists(pathTo & "INOUT_" & x) Set f = fso.GetFolder(pathTo & "INOUT_" & x) dates(x) = f.DateCreated x = x +1WendIf x = 4 then d = Now For y=1 to 3 If dates(y)" файл.txt" then f.DeleteNextВсе работает и даже ведется лог ;) Еще раз спасибо!!!