Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/75: Рейтинг темы: голосов - 75, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 10.11.2015
Сообщений: 33

Скрипт для получения файла с ftp за текущий день

18.03.2020, 11:18. Показов 15710. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
обрый день!

Дано:
Имеется ftp, в котором появляется файл в любой день (заранее неизвестно), его нужно получить.
Формат файла: GRBS30**.exe
На ftp есть логин, пароля нет (пустой)

Задача: Получить файл за текущий день (сегодня) по вышеуказанной маске.
Пример файла в итоговом варианте: ftp://IP/GRBS3026.exe

Пробовал такой скрипт (с указанием переменных):

PowerShell
1
2
3
4
5
$list = List-FTPDir -URL $Server -Username $User -Password $Pass | ?{$_.IsDirectory -eq $true} | %{List-FTPDir -URL $Server -Username $User -Password $Pass -Path $_.Name} | ?{$_.ModifiedDate -gt (Get-date).AddDays(-1) -and $_.IsDirectory -eq $false}
if ($list -eq $null) {
    echo 'Список файлов пуст. Скачивать нечего.'
} else {
    $list | %{Get-FTPFile -URL $_.FullPath -Username $User -Password $Pass -Target $destpath}
Но ответ такой:
List-FTPDir : Имя "List-FTPDir" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Пр
оверьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку.
C:\Users\Администратор\desktop\2.ps1:5 знак:9
+ $list = List-FTPDir -URL $Server -Username $User -Password $Pass | ?{$_.IsDirect ...
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (List-FTPDir:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Прошу помощь с составлением данного скрипта, либо направить в нужном русле.
Заранее спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.03.2020, 11:18
Ответы с готовыми решениями:

Написать VBS скрипт для скачивания файла по FTP.
На FTP лежат куча файлов, мне надо скачать самый свежий, т.е. у которого дата создания самая поздняя. Вложеных папок на FTP нетю Помогите...

Библиотека BytesRoad.Net.FTP.dll для работы с FTP: как реализовать докачку файла
Добрый день. Пишу программу, реализующую скачивание с фтп(суть - фтп клиент).Использую библиотеку стороннего разработчика -...

Был ли день удачным, если известна дата, выручка за предыдущие дни месяца и выручка за текущий день
В конце дня в магазине подводятся итоги, определяется выручка за день и сравниваются со среднедневной выручкой с начала текущего месяца. ...

31
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
23.03.2020, 13:14
Студворк — интернет-сервис помощи студентам
Уберите строчку del info.txt, запустите сценарий и пришлите содержимое образовавшегося файла info.txt

Добавлено через 24 минуты
Сделайте скриншот открытого файла info.txt и прикрепите его к сообщению
1
1 / 1 / 0
Регистрация: 10.11.2015
Сообщений: 33
23.03.2020, 14:44  [ТС]
Прошу прощения, скрипт Ваш работает, я что-то напутал с версиями, сделал полностью с нуля и загрузка пошла!

Возможно уже не по теме, всё что хотел, кроме 1 пункта получилось реализовать.
После скачивания я через JS выполняю запуск файл и нажатие на нужные кнопки, но вот как сделать запуск скачанного файла?
Вот часть кода:
JavaScript
1
2
3
WshShell = WScript.CreateObject("WScript.Shell");
WshShell.Run ("D:\GRBS3026", 1);
WScript.Sleep (2000);
У меня есть 2 варианта:
1) Как-то передать скрипту имя скаченного файла.
2) Скачать файл по-Вашему скрипту, затем запустить *.exe из этой папки, а в конце после всех действий удалить *.exe.

Мне кажется 2 вариант проще, но JS не хочет запускать через *.exe, я так понимаю ему тоже листинг директории нужен?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
24.03.2020, 00:31
По JS я бы рекомендовал Вам обратиться в соответствующую рубрику
0
1 / 1 / 0
Регистрация: 10.11.2015
Сообщений: 33
12.02.2021, 14:45  [ТС]
Возможно ли изменить этот скрипт, чтобы вместо скачивания файла была отправка сообщения на эл почту с указанием названия файла?
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
12.02.2021, 15:01
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
@echo off
setlocal enabledelayedexpansion
"C:\Program Files (x86)\WinSCP\WinSCP.com" /ini=nul /command "open ftp://checkpoint:OMisG4F5@10.0.1.171" "cd /IP" "ls">C:\test_ftp\info.txt "exit"
for /f "tokens=1,2,3 delims=." %%a in ("%date%") do (
    set day=%%a
    set month=%%b
    set year=%%c
)
if %day%==01 set day=1
if %day%==02 set day=2
if %day%==03 set day=3
if %day%==04 set day=4
if %day%==05 set day=5
if %day%==06 set day=6
if %day%==07 set day=7
if %day%==08 set day=8
if %day%==09 set day=9
if %month%==01 set month=Jan
if %month%==02 set month=Feb
if %month%==03 set month=Mar
if %month%==04 set month=Apr
if %month%==05 set month=May
if %month%==06 set month=Jun
if %month%==07 set month=Jul
if %month%==08 set month=Aug
if %month%==09 set month=Sep
if %month%==10 set month=Oct
if %month%==11 set month=Nov
if %month%==12 set month=Dec
for /f "tokens=4,5,7,8 delims= " %%a in ('type info.txt ^| findstr /L /C:"GRBS"') do (
    set file=%%d
    if %%b==%day% (
        if %%a==%month% (
            if %%c==%year% (
                call :step_1 "!file!"
            )
        )
    )
)
:step_1
if "%1"=="" (
    del info.txt
    exit
)
SET "SMTPServer=..."
SET "MailFrom=..."
SET "Alias=..."
SET "MailTo=..."
SET "Subject=Название файла"
SET "Message=!file!"
cmail -host:login:password@!SMTPServer! -secureport -starttls -from:!MailFrom!:"!Alias!" -to:!MailTo! -subject:"!Subject!" 2>nul
exit /b
Примечание.
1) Утилита для отправки почты cmail во вложении
2) Внести изменения в скрипт там где многоточия
3) login и password в начале предпоследней строки тоже изменить
Вложения
Тип файла: zip CMail.zip (801.5 Кб, 5 просмотров)
1
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
19.02.2021, 07:46
Недочет в коде. Предпоследнюю строчку (51) заменить на:
Windows Batch file
1
cmail -host:login:password@!SMTPServer! -secureport -starttls -from:!MailFrom!:"!Alias!" -to:!MailTo! -subject:"!Subject!" -body:"!Message!" 2>nul
0
0 / 0 / 0
Регистрация: 29.04.2021
Сообщений: 3
29.04.2021, 09:18
Цитата Сообщение от Karen87 Посмотреть сообщение
Пробуйте:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
setlocal enabledelayedexpansion
"C:\Program Files (x86)\WinSCP\WinSCP.com" /ini=nul /command "open ftp://checkpoint:OMisG4F5@10.0.1.171" "cd /IP" "ls">C:\test_ftp\info.txt "exit"
for /f "tokens=1,2,3 delims=." %%a in ("%date%") do (
    set day=%%a
    set month=%%b
    set year=%%c
)
if %day%==01 set day=1
if %day%==02 set day=2
if %day%==03 set day=3
if %day%==04 set day=4
if %day%==05 set day=5
if %day%==06 set day=6
if %day%==07 set day=7
if %day%==08 set day=8
if %day%==09 set day=9
if %month%==01 set month=Jan
if %month%==02 set month=Feb
if %month%==03 set month=Mar
if %month%==04 set month=Apr
if %month%==05 set month=May
if %month%==06 set month=Jun
if %month%==07 set month=Jul
if %month%==08 set month=Aug
if %month%==09 set month=Sep
if %month%==10 set month=Oct
if %month%==11 set month=Nov
if %month%==12 set month=Dec
for /f "tokens=4,5,7,8 delims= " %%a in ('type info.txt ^| findstr /L /C:"GRBS"') do (
    set file=%%d
    if %%b==%day% (
        if %%a==%month% (
            if %%c==%year% (
                call :step_1 "!file!"
            )
        )
    )
)
:step_1
if "%1"=="" (
    del info.txt
    pause
    exit
)
"C:\Program Files (x86)\WinSCP\WinSCP.com" /ini=nul /command "open ftp://checkpoint:OMisG4F5@10.0.1.171" "cd /IP" "option transfer binary" "lcd C:\test_ftp" "get %~1" "exit"
exit /b
Добавлено через 3 минуты
Важные моменты:
1) Создайте на диске C папку test_ftp
2) Сценарий запускайте из этой папки
А не подскажите как заставить работать скрипт если в info такой результат:

Соединяюсь с 192.168.1.10…
Соединение установлено
Открываю соединение…
Соединение открыто.
Активные соединения: [1] userftp@192.168.1.10
/testing
D--------- 0 0 ..
-rw-r--r-- 0 1011 1002 181896 Apr 29 11:02:46 2021 GRBS.exe
-rw-r--r-- 0 1011 1002 181896 Apr 29 11:03:26 2021 GRBS3027.exe

Дело в том что скачивание файлов не происходит, пишет "Не удалось найти файл", подозреваю что дело в токенах, не очень понял принцип их подсчета! Буду благодарен за помощь.
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
29.04.2021, 16:37
Цитата Сообщение от malloy-mt Посмотреть сообщение
А не подскажите как ...
Сначала задачу целиком - сомневаюсь что идентичная теме, а если совсем непохожа, отдельную тему с детальным описанием желаемого и того что не получается. На кофейной гуще гадать никто не будет почему
Цитата Сообщение от malloy-mt Посмотреть сообщение
пишет "Не удалось найти файл"
0
0 / 0 / 0
Регистрация: 29.04.2021
Сообщений: 3
29.04.2021, 16:58
Задача точно такая же, выкачать файлы за текущий день, из за других настроек FTP. файл info немного отличается от исходного, поэтому скрипт не отрабатывается! Выше я привел кусок файла info под который нужно подогнать скрипт.
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
29.04.2021, 18:28
malloy-mt, пробуйте:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
@echo off
setlocal enabledelayedexpansion
"C:\Program Files (x86)\WinSCP\WinSCP.com" /ini=nul /command "open ftp://checkpoint:OMisG4F5@10.0.1.171" "cd /IP" "ls">C:\test_ftp\info.txt "exit"
for /f "tokens=1,2,3 delims=." %%a in ("%date%") do (
    set day=%%a
    set month=%%b
    set year=%%c
)
if %day%==01 set day=1
if %day%==02 set day=2
if %day%==03 set day=3
if %day%==04 set day=4
if %day%==05 set day=5
if %day%==06 set day=6
if %day%==07 set day=7
if %day%==08 set day=8
if %day%==09 set day=9
if %month%==01 set month=Jan
if %month%==02 set month=Feb
if %month%==03 set month=Mar
if %month%==04 set month=Apr
if %month%==05 set month=May
if %month%==06 set month=Jun
if %month%==07 set month=Jul
if %month%==08 set month=Aug
if %month%==09 set month=Sep
if %month%==10 set month=Oct
if %month%==11 set month=Nov
if %month%==12 set month=Dec
for /f "tokens=6,7,9,10 delims= " %%a in ('type info.txt ^| findstr /C:"GRBS"') do (
    set file=%%d
    if %%b==%day% (
        if %%a==%month% (
            if %%c==%year% (
                call :step_1 "!file!"
            )
        )
    )
)
:step_1
if "%1"=="" (
    del info.txt
    pause
    exit
)
"C:\Program Files (x86)\WinSCP\WinSCP.com" /ini=nul /command "open ftp://checkpoint:OMisG4F5@10.0.1.171" "cd /IP" "option transfer binary" "lcd C:\test_ftp" "get %~1" "exit"
exit /b
1
0 / 0 / 0
Регистрация: 29.04.2021
Сообщений: 3
30.04.2021, 08:12
Karen87, Спасибо большое. Все получилось!
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
30.04.2021, 08:53
malloy-mt, да не за что
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.04.2021, 08:53

Скрипт для получения случайной картинки
Нужен скрипт для получения случайной картинки. Но не просто получения случайно картинки. Это все должно происходить так: Есть dle forum,...

Скрипт для получения списка файлов в текущей директории
Написать скрипт для получения списка файлов в текущей директории Скрипт я написал,но он действует немного по-другому: этот скрипт...

Скрипт для получения отчета о событиях доступа к файлу
Скрипт для получения отчета о событиях доступа к файлу. Данные заносились в excel Скрипт для получения отчета о событиях входа/выхода...

Можно ли реализовать скрипт на PHP (используя GD) для получения скриншота сайта?
Можно ли реализовать скрипт на PHP (используя GD) для получения скриншота сайта? Суть идеи: я делаю поисковую систему, точнее, даже...

Получения файла *.com из файла *.тхт в кодировке ASCII для корректного рисования через псевдографику
Здравствуйте , задача: Создать программу типа .COM, которая в текстовом режиме выводит с помощью псевдографики изображения заданного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru