[Цитировать]

    wert
  • 23213
  • Стаж: 4 года 3 месяца
  • Сообщений: 87
  • Репутация:2

    [+] [-]
dimo70, wget –-ftp-user=dan ––ftp-password=********* FTP-URL

[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 3 месяца
  • Сообщений: 3990
  • Репутация:26

    [+] [-]
  • Откуда: BG
JuraAD, wert, спасибо за предложения. Я wget знаю.
Хотелось сделать без сторонних утилит, т.е команд файл или VBS, чтоб размер был минимальный. Проверю FTP команду за начало. У меня есть скрипт VBS на скачки через HTTPS и думал что есть подобный вариант и для FTP. aa

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    wert
  • 23213
  • Стаж: 4 года 3 месяца
  • Сообщений: 87
  • Репутация:2

    [+] [-]
dimo70, прив
dim cn, rs, strComp
dim fso, tf, fn, rc, tnam
dim count, sa
Dim ogwApp, ogwRootAcct, ogwNewMessage
'качаем список файлов
Set sh = CreateObject("wscript.shell")
Ft = "ftp.exe -s:" + chr(34) + "d:\_EPI\FTP_SCRIPT\urb.txt" + chr(34) + " 10.10.1.3"
sh.Run Ft, 0, -1
Set sh = Nothing
'качаем список файлов ftp2
Set sh = CreateObject("wscript.shell")
Ft = "ftp.exe -s:" + chr(34) + "d:\_EPI\FTP_SCRIPT\big.txt" + chr(34) + " 10.10.1.2"
sh.Run Ft, 0, -1
Set sh = Nothing
'выбираем новые
set cn = CreateObject("ADODB.Connection")
cn.connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\_EPI\FTP_SCRIPT\ftp.mdb"
cn.open
set rs = CreateObject("ADODB.Recordset")
rs.CursorType = 3
rs.LockType = 3
rs.Open "SELECT t0802_UrbNew.File FROM t0802_UrbNew LEFT JOIN t0801_UrbDown ON t0802_UrbNew.File = t0801_UrbDown.fileO WHERE (((t0801_UrbDown.fileO) Is Null));",cn
'пишем конфиг для скачки
set fso = CreateObject("Scripting.FileSystemObject")
set tf = fso.CreateTextFile("d:\_EPI\FTP_SCRIPT\UrbDown.txt", true)
tf.WriteLine "login"
tf.WriteLine "pass"
Do While Not rs.EOF
tnam = Right(rs.fields("file").value, Len(rs.fields("file").value) - instrrev(rs.fields("file").value,"/"))
tf.WriteLine "get " + rs.fields("file").value + " d:\_EPI\FTP_SCRIPT\send\" + tnam
rs.MoveNext
Loop
rs.close
tf.WriteLine "bye"
'выбираем новые для ftp2
rs.Open "SELECT t0803_Big_new.file FROM t0803_Big_new LEFT JOIN t0801_UrbDown ON t0803_Big_new.file = t0801_UrbDown.fileO WHERE (((t0801_UrbDown.fileO) Is Null));",cn
'пишем конфиг для скачки 2
set fso = CreateObject("Scripting.FileSystemObject")
set tf = fso.CreateTextFile("d:\_EPI\FTP_SCRIPT\BigDown.txt", true)
tf.WriteLine "log2"
tf.WriteLine "pass2"
Do While Not rs.EOF
tnam = Right(rs.fields("file").value, Len(rs.fields("file").value) - instrrev(rs.fields("file").value,"/"))
tf.WriteLine "get " + rs.fields("file").value + " d:\_EPI\FTP_SCRIPT\send\" + tnam
rs.MoveNext
Loop
rs.close
tf.WriteLine "bye"
'качаем нужное
Set sh = CreateObject("wscript.shell")
Ft = "ftp.exe -s:" + chr(34) + "d:\_EPI\FTP_SCRIPT\UrbDown.txt" + chr(34) + " 10.10.1.3"
sh.Run Ft, 0, -1
Set sh = Nothing
'качаем нужное ftp2
Set sh = CreateObject("wscript.shell")
Ft = "ftp.exe -s:" + chr(34) + "d:\_EPI\FTP_SCRIPT\BigDown.txt" + chr(34) + " 10.10.1.2"
sh.Run Ft, 0, -1
Set sh = Nothing
'проверяем какие файлы скачали, пишем в таблицу
Set count = CreateObject("scripting.filesystemobject")
aCoun = count.GetFolder("d:\_EPI\FTP_SCRIPT\send\").files.count
if aCoun > 0 then
set files = count.getfolder("d:\_EPI\FTP_SCRIPT\send\").files
rs.open "file", cn
for each file in files
'msgbox file
strComp = Right(file, Len(file) - instrrev(file,"\"))
rs.AddNew
if left(strComp,5) = "17223" then 'востанавливаем исходный путь коряво, но для конкретного случая пойдет
rs.fields("path").value = "DARHIV/IN/" + strComp
else
rs.fields("path").value = "ARHIV_M/IN/" + strComp
end if
rs.fields("fileN").value = strComp
rs.Update
next
rs.close
'пишем в список загруженных, то что скачалось
rs.open "INSERT INTO t0801_UrbDown (fileO) SELECT file.path FROM file;", cn
rs.open "DELETE file.* FROM file;", cn
set rs = nothing
set cn = nothing
'создаем письмо GW
Set ogwApp = CreateObject("NovellGroupWareSession")
Set ogwRootAcct = ogwApp.Login()
Set ogwNewMessage = ogwRootAcct.MailBox.Messages.Add("GW.MESSAGE.MAIL", 4)
ogwNewMessage.BodyText = "Просмотрите, может будет интересно"
ogwNewMessage.Subject = "Новые файлы на FTP"
ogwNewMessage.Recipients.Add "admin@admin.by", NGW, egwTo
for each file in files
sa = file
ogwNewMessage.Attachments.Add sa
next
ogwNewMessage.Send
Set ogwRootAcct = Nothing
Set ogwNewMessage = Nothing
Set ogwApp = Nothing
end if
'Перемещаем файлы в каталог где они нужны
if aCoun > 0 then
for each file in files
strComp = "d:\_EPI\imp\" + Right(file, Len(file) - instrrev(file,"\"))
file.copy strComp,true
file.delete
next
end if
set files = nothing
Set count = nothing
ет

[Цитировать]

    JuraAD
  • 28398
  • Стаж: 2 года 8 месяцев
  • Сообщений: 70
  • Репутация:25

    [+] [-]
96031dimo70...
ёперный театр... :lol: Измени активный режим на пассивный или обратно... -))) возми http://github.com/aria2/aria2/tags и торент и все остальное сможешь качнуть...
wert + ...
Проблема в том, что в скриптах vbs и js ты пользуешься ActiveX - в новых системах их может и не быть (PE система, Вынь 11) или работать по-другому... Сам по себе vbs и js может не больше cmd -))) утрирую, но близко к истине...
wscript.shell
HKEY_CLASSES_ROOT\WScript.Shell
HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{72C24DD5-D70A-438B-8A42-98424B88AFB8}
или 64-бит
ADODB.Connection
HKEY_CLASSES_ROOT\ADODB.Connection
HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{00000514-0000-0010-8000-00AA006D2EA4}
или 64-бит

[Цитировать]

    Valek271183
  • 14580
  • Стаж: 7 лет 6 месяцев
  • Сообщений: 103
  • Репутация:0

    [+] [-]
Как можно реализовать такую идею: нужно добавить в переменную Имя пользователя из другой ОС
[img]https://disk.yandex.ru/i/WlARFzhHxk5Nxw[/img]
Цель в Windows PE добавить в переменную имя пользователя из офлайн системы, но тут возникают трудности. систем может быть несколько, но это решается уже имеющимся bat, который добавит в глобальную переменную диск с нужной системой, будет переменная типа %offlinesystem%
А вот как быть с пользователями если их будет несколько? может по дате последнего входа или может вообще можно сделать несколько переменных типа %user1%, %User2% для разных пользователей ???
Но так как я как wadimus батники делать не умею, прошу помощи коллег по форуму, подскажи как это реализовать?

[Цитировать]

    JuraAD
  • 28398
  • Стаж: 2 года 8 месяцев
  • Сообщений: 70
  • Репутация:25

    [+] [-]
Valek271183, советую выгребать через временный файл, если работаешь в большой организации, которая, к примеру, использует Active Directory и рабочую станцию для нескольких пользователей - пользователей может быть сотня, а то и две... -))) (я встречал такой зоопарк... к примеру - в учебном центре)
Cmd или bat не сдюжит такое количество сетов - свалится...
Профиль пользователя создается для всех, кто логинился или для каждого кто вводил имя пользователя и пароль... Встречал диалоги типа у вас нет доступа - введите имя пользователя/администратора и пароль?

[Цитировать]

    Valek271183
  • 14580
  • Стаж: 7 лет 6 месяцев
  • Сообщений: 103
  • Репутация:0

    [+] [-]
JuraAD, интересуют только клиентские машины, редко редко когда увидишь больше трёх-четырёх пользователей.
Вообще мне кажется мне хватило бы 2-3 переменных, бОльшая часть компьютеров всё-таки с одним пользователем, для большего количества пользователей наверно лучше всё делать вручную.
Может это упростит задачу, если надо будет сделать переменные для первых трёх пользователей в профиле ??

[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 3 месяца
  • Сообщений: 3990
  • Репутация:26

    [+] [-]
  • Откуда: BG
Вопрос по комманду Winsat: насколько точно при помощи этой комманды можно определить скорость диска.
winsat disk -drive C:
Проверял через DiskMark, скоростьи не совпадают вполне.
Идея у меня если winsat показывает верно, сделать батник для проверки скорости дисков.

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 6 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
96248нужно добавить в переменную Имя пользователя из другой ОС
...
будет переменная типа %offlinesystem%
...
может вообще можно сделать несколько переменных типа %user1%, %User2% для разных пользователей ???
...
Вообще мне кажется мне хватило бы 2-3 переменных, бОльшая часть компьютеров всё-таки с одним пользователем
aa Может как-то так:
@echo off
set "offlinesystem=F:"
set "num=0"
for /f "delims=" %%A in ('dir /B /A:D-H %offlinesystem%\Users^| findstr /IV Public') do (
set /a "num+=1"
set "name=%%A"
call set "User%%num%%=%%offlinesystem%%\Users\%%name%%"
)
if Defined User1 (echo User1 = "%User1%")
if Defined User2 (echo User2 = "%User2%")
if Defined User3 (echo User3 = "%User3%")
if Defined User4 (echo User4 = "%User4%")
if Defined User5 (echo User5 = "%User5%")
echo.
pause
1. set "offlinesystem=F:" - это Вам, понятное дело, не нужно (Вы своими путями уже получили букву диска, как я понял)
2. команда dir: ключ /A:D чтобы выводились только каталоги (вдруг файлики валяются), ключ /A:-H чтобы не выводились скрытые каталоги, у меня на Win10 это убрало из результатов каталоги All Users, Default, Default User (на других системах надо пробовать)
3. каталог Public убрали ключом "/V Public" команды findstr (ключ /I для неучета регистра)
4. теоретически в катологе Users могут оказаться , помимо каких-то файлов, еще и какие-то лишние каталоги, но такое наверное очень маловероятно, так что наверное нет необходимости проверять что найденные каталоги это пользовательские каталоги
...
PS: уверен, старшие товарищи могут и что-то получше предложить))


Последний раз редактировалось: cartmenezz (2022-07-27 21:04), всего редактировалось 2 раз(а)

[Цитировать]

    wadimus
  • 14910
  • Стаж: 7 лет 4 месяца
  • Сообщений: 762
  • Репутация:91

    [+] [-]
пользователь: user1 - ok!
пользователь: иванов василий петрович - ok?

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 6 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
96267пользователь: иванов василий петрович - ok?
если это вопрос к моему варианту, то наверное да, но надо будет перепроверить... проверял с тестовой виндой, и там у меня как раз были пользователи с сомнительными именами, типа "проверка & 1 2 3" и т.п (там тестировал другой скрипт, надо было сохранять на рабочий стол, хотелось все предусмотреть, поэтому создавал подобных пользователей, парочка из них сохранилась...)
но что-то я засомневался, оставались ли с кириллицей в имени... я щас не дома, с телефона пишу
...
с кириллицей надо перепроверить, может и правда когда тестил не было таких пользователей...
Добавлено через 44 минуты 28 секунд:
96267пользователь: иванов василий петрович - ok?
Все ОК ))

Картинка

[Цитировать]

    wadimus
  • 14910
  • Стаж: 7 лет 4 месяца
  • Сообщений: 762
  • Репутация:91

    [+] [-]
cartmenezz, а зачем список всех пользователей?
ведь виндось же один стоит в системе .. папка одна (Windows) и программ-филесы одни (Program Files и Program Files (x86))

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 6 месяцев
  • Сообщений: 526
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
96269а зачем список всех пользователей?
ну этого я не знаю, зачем-то нужно, какой-то глобальный батник,.... как я понял, это только часть задумки (может планируется бэкап пользовательских данных, или типо того)

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 1 месяц
  • Сообщений: 3586
  • Репутация:127

    [+] [-]
hseg0, вот простенький генератор имён от 11 до 15 символов
setlocal EnableDelayedExpansion
for /l %%i in (1,1,10) do (
set /a d=!random!*26/32768+65
cmd /c exit !d!
set name=!name!!=exitcodeAscii!
)
echo %name%%random%

[Цитировать]

    hseg0
  • 30496
  • Стаж: 2 года 1 месяц
  • Сообщений: 3
  • Репутация:0

    [+] [-]
Ander_73, Спасибо за Ваш Труд - отлично работает Ваш код. Тут не много дополнил для автомизации процесса переименования ПК, если есть ошибки поправьте, пожалуйста:
@echo off
setlocal EnableDelayedExpansion
for /l %%i in (1,1,10) do (
set /a d=!random!*26/32768+65
cmd /c exit !d!
set name=!name!!=exitcodeAscii!
)
echo %name%%random%
wmic computersystem where name="%computername%" rename "%name%%random%"
pause

Страница 76 из 89


Показать сообщения:    

Текущее время: 28-Мар 17:43

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы