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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Копирование папки с файлами из сетевой папки (http://forum.oszone.net/showthread.php?t=340169)

Stgean 19-04-2019 14:44 2868377

Копирование папки с файлами из сетевой папки
 
Здравствуйте, помогите пожалуйста переписать bat файл в vbs
Сам код bat
Код:

@echo off
Set From="\\192.168.0.21\1$\2"
Set To="C:\3"
Set VerFile="C:\3\11.txt"
If Not Exist %VerFile% If Exist %To% xcopy %From% %To% /s /e /c /h /r /y /q


megaloman 19-04-2019 15:53 2868385

Код:

BoxIn = "\\192.168.100.23\Test1\kuku"
BoxOut = "Z:\Soft_Out"
Flag = BoxOut + "\11.txt"

With CreateObject("Scripting.FileSystemObject")
    If Not .FolderExists(BoxOut) Then
        MsgBox "Folder" + vbCrLf + vbCrLf + BoxOut + vbCrLf + vbCrLf + "not found"
        WScript.Quit 2
    End If
    If .FileExists(Flag) Then
        MsgBox "File" + vbCrLf + vbCrLf + Flag + vbCrLf + vbCrLf + "exists."
        WScript.Quit 1
    End If
    .CopyFolder BoxIn, BoxOut, True
End With

MsgBox "OK"


Stgean 22-04-2019 11:31 2868663

Цитата:

BoxIn = "\\192.168.100.23\Test1\kuku"
BoxOut = "Z:\Soft_Out"
Flag = BoxOut + "\11.txt"

With CreateObject("Scripting.FileSystemObject")
If Not .FolderExists(BoxOut) Then
MsgBox "Folder" + vbCrLf + vbCrLf + BoxOut + vbCrLf + vbCrLf + "not found"
WScript.Quit 2
End If
If .FileExists(Flag) Then
MsgBox "File" + vbCrLf + vbCrLf + Flag + vbCrLf + vbCrLf + "exists."
WScript.Quit 1
End If
.CopyFolder BoxIn, BoxOut, True
End With

MsgBox "OK"

А как можно написать путь чтобы все копировалось в C:\Users\Usersprofile\AppData. Это нужно чтобы можно было обновлять программу на терминальных серверах.

Вот так можно написать путь в BoxOut?
Код:

C:\Users" & username & "\AppData\

megaloman 22-04-2019 15:08 2868699

Stgean, Попробуйте
Код:

BoxOut = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%UserProfile%") + "\AppData"
MsgBox BoxOut

Строка MsgBox BoxOut вставлена для отладки, если Вас устроит результат, можете её убить

Iska 22-04-2019 16:39 2868708

Цитата:

Цитата Stgean
C:\Users\Usersprofile\AppData »

А точнее? Вам в AppData\Local или в AppData\Roaming?

Stgean 23-04-2019 06:16 2868773

Цитата:

А точнее? Вам в AppData\Local или в AppData\Roaming?
Папка с программой у пользователей лежит в C:\Users\userprofile\AppData\1

Iska 23-04-2019 07:27 2868775

Stgean, не должно такого быть. Это какой-то ручной самопал получается. Где, скажем, будет находиться каталог с программой в случае до-Vista ОС?

Stgean 23-04-2019 07:36 2868776

Цитата:

Stgean, не должно такого быть. Это какой-то ручной самопал получается. Где, скажем, будет находиться каталог с программой в случае до-Vista ОС?
По другому и не получится, программа не работает, если ее с одного ярлыка запускать 2 людям. Поэтому, я и принял решение что на сервере хранится эталон на C:\1, у каждого пользователя она лежит в C:\Users\userprofile\AppData\1, много места занимает конечно, но зато у каждого пользователя своя программа. Поэтому мне и необходимо ее обновить, но не знаю как правильно путь указывается на vbs именно до C:\Users\userprofile\AppData\1.

Iska 23-04-2019 23:34 2868900

Stgean, Вы меня не поняли. Приложения, устанавливаемые в режиме «на пользователя», должны хранить свои постоянные и временные данные (в том числе и исполняемые файлы) не в корне %UserProfile%/AppData, а на уровень ниже. У нас есть каталог %UserProfile%\AppData, в котором находятся каталоги:
  • Roaming (бывший каталог Application Data из предыдущих версий ОС, нынче в профиле вместо данного каталога имеется связь (junction) Application Data, указывающая на каталог %UserProfile%\AppData\Roaming), переменная окружения, указывающая на данный каталог — %APPDATA%;
  • Local (бывший каталог Local Settings из предыдущих версий ОС, нынче в профиле вместо данного каталога имеется связь (junction) Local Settings, указывающая на каталог %UserProfile%\AppData\Local), переменная окружения, указывающая на данный каталог — %LOCALAPPDATA%;
  • LocalLow — нововведение новых версий ОС, что это такое и для чего нужно — можно почитать по ссылке ниже, нас он в данном случае не интересует.

Исполняемые файлы приложений, устанавливаемых в режиме «на пользователя», как правило, хранятся либо в каталоге %UserProfile%\AppData\Roaming (и перемещаются вместе с профилем пользователя по машинам [в случае использования перемещаемого доменного профиля]), либо в каталоге %UserProfile%\AppData\Local (и не «гуляют» вослед пользователю вместе с его профилем по машинам) в виде %UserProfile%\AppData\Roaming|Local\Название компании\Название приложения. Но никак не в корне каталога %UserProfile%\AppData.

Зачем нужна и где расположена папка AppData в Windows?

Цитата:

Цитата Stgean
программа не работает, если ее с одного ярлыка запускать 2 людям »

Либо разработка времён Windows 3.1, либо разработчиков надо долго бить подсвечниками клавиатурами.

Stgean 24-04-2019 06:03 2868919

Цитата:

Цитата Iska
Stgean, Вы меня не поняли. Приложения, устанавливаемые в режиме «на пользователя», должны хранить свои постоянные и временные данные (в том числе и исполняемые файлы) не в корне %UserProfile%/AppData, а на уровень ниже. У нас есть каталог %UserProfile%\AppData, в котором находятся каталоги:
Roaming (бывший каталог Application Data из предыдущих версий ОС, нынче в профиле вместо данного каталога имеется связь (junction) Application Data, указывающая на каталог %UserProfile%\AppData\Roaming), переменная окружения, указывающая на данный каталог — %APPDATA%;
Local (бывший каталог Local Settings из предыдущих версий ОС, нынче в профиле вместо данного каталога имеется связь (junction) Local Settings, указывающая на каталог %UserProfile%\AppData\Local), переменная окружения, указывающая на данный каталог — %LOCALAPPDATA%;
LocalLow — нововведение новых версий ОС, что это такое и для чего нужно — можно почитать по ссылке ниже, нас он в данном случае не интересует.
Исполняемые файлы приложений, устанавливаемых в режиме «на пользователя», как правило, хранятся либо в каталоге %UserProfile%\AppData\Roaming (и перемещаются вместе с профилем пользователя по машинам [в случае использования перемещаемого доменного профиля]), либо в каталоге %UserProfile%\AppData\Local (и не «гуляют» вослед пользователю вместе с его профилем по машинам) в виде %UserProfile%\AppData\Roaming|Local\Название компании\Название приложения. Но никак не в корне каталога %UserProfile%\AppData. »

Видимо вы тоже меня не совсем понимаете))) На обычных компьютерах программа устанавливается в C:\1, тут проблем никаких не возникает, а вот на терминальном сервере уже немного посложнее. Хоть она и ставиться в C:\1, то запускать ее несколько пользователей с одного ярлыка не могут, программа выдает ошибку что файл lock уже якобы занят. Поэтому и пришла мысль положить каждому пользователю кто работает с этой программой в UserProfile\AppData\1. Место конечно немало занимается, но другого решения этой проблемы я не нашел.

В итоге объединил весь код с которым мне помогли и на удивление все работает.

Код:

BoxIn = "\\192.168.0.21\32$\2"
BoxOut1 = "C:\1"
BoxOutTerm = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%UserProfile%") + "\AppData" + "\1"
Flag1 = BoxOut1 + "\23.txt"
FlagTerm = BoxOutTerm + "\23.txt"
'*************************************************
With CreateObject("Scripting.FileSystemObject")
    If Not .FolderExists(BoxOut1) Then
    WScript.Quit 2
        End If
If Not .FolderExists(BoxOutTerm) Then
    WScript.Quit 2
        End If
   
If .FileExists(Flag1) Then
        End If
    .CopyFolder BoxIn, BoxOut1, True

If .FileExists(FlagTerm) Then
        End If
    .CopyFolder BoxIn, BoxOutTerm, True
        End With


Iska 24-04-2019 17:05 2869031

Цитата:

Цитата Stgean
Видимо вы тоже меня не совсем понимаете))) »

Я Вас понял. А вот Вы меня по-прежнему — нет.

Цитата:

Цитата Stgean
положить … в UserProfile\AppData\1. »

Кладите не в %UserProfile%\AppData\1, а в %UserProfile%\AppData\Local\1. Для определения пути к каталогу …\Local используйте либо раскрытие переменной окружения %LOCALAPPDATA%, либо (что более правильно) предопределённое символьное имя Проводника «shell:Local AppData»: WSH: перечень предопределённых символьных имён Shell.Application — Коллекция скриптов и идей — Серый форум.


Время: 15:52.

Время: 15:52.
© OSzone.net 2001-