Скрипт 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

<pre class="prettyprint linenums">dim pathFrom, pathTo pathFrom = "c:\INOUT" pathTo = "d:\" Set fso=CreateOject("Scripting.FilesystemObject") x = 1 While fso.FolderExists(pathTo & "INOUT_" & x) x = x +1 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</pre>Вопросы?<sup><sub> Jah loves you.</sub></sup>
При выполнении пишет что "файл уже существует" (строка 15,символ5).. как починить?


Alexsz

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


Alexsz

Нужно этот текст скопировать в vbs-файл а файл повесить в шедулер.<sup><sub> Jah loves you.</sub></sup>
Скопировал, набил папку 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

Вообще-то там наполовину не правильно. <pre class="prettyprint linenums">dim pathFrom, pathTo pathFrom = "C:\Shared\OpusOS" pathTo = "f:\" Set fso=CreateObject("Scripting.FilesystemObject") x = 1 While fso.FolderExists(pathTo & "INOUT_" & x) x = x +1 Wend fso.CreateFolder pathTo & "INOUT_" & x fso.MoveFolder pathFrom, pathTo & "INOUT_" & x</pre>
Злостная ошибка в новой версии осталась, "файл уже существует", строка 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

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


Alexsz

Блин, вот, что значит думать руками, а не головой… <pre class="prettyprint linenums">dim pathFrom, pathTo pathFrom = "C:\INOUT" pathTo = "f:\" Set fso=CreateObject("Scripting.FilesystemObject") x = 1 While fso.FolderExists(pathTo & "INOUT_" & x) x = x +1 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</pre><sup><sub> Jah loves you.</sub></sup>
ВЫ МОСХ! сработало! (на первый взгляд). Кажется Все работает!!! :) :) :)


Alexsz

Блин, вот, что значит думать руками, а не головой… <pre class="prettyprint linenums">dim pathFrom, pathTo pathFrom = "C:\INOUT" pathTo = "f:\" Set fso=CreateObject("Scripting.FilesystemObject") x = 1 While fso.FolderExists(pathTo & "INOUT_" & x) x = x +1 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</pre><sup><sub> Jah loves you.</sub></sup>
Эм... а файл "Файл.txt" поидее должен быть в папке источнике.. А скрипт его переносит в папку INOUT_1... Можно это починить?


Alexsz

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


Alexsz

Блин, вот, что значит думать руками, а не головой… <pre class="prettyprint linenums">dim pathFrom, pathTo pathFrom = "C:\INOUT" pathTo = "f:\" Set fso=CreateObject("Scripting.FilesystemObject") x = 1 While fso.FolderExists(pathTo & "INOUT_" & x) x = x +1 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</pre><sup><sub> Jah loves you.</sub></sup>
Вопрос, а нельзя сделать, чтобы после 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

<pre class="prettyprint linenums">dim pathFrom, pathTo pathFrom = "C:\INOUT" pathTo = "f:\" dim dates(3) Set fso=CreateObject("Scripting.FilesystemObject") x = 1 While fso.FolderExists(pathTo & "INOUT_" & x) Set f = fso.GetFolder(pathTo & "INOUT_" & x) dates(x) = f.DateCreated x = x +1 Wend If x = 4 then d = Now For y=1 to 3 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</pre>Теперь будет затирать самую старую папку из трех существующих.
Работает, а можно внести файлик текстовый (лог), в котором будут отображаться результаты действий? (перемещение, копирование, владелец папки)?


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Все работает и даже ведется лог ;) Еще раз спасибо!!!