|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Пакетное перемещение файлов на фтп (os windows 8) |
|
CMD/BAT - Пакетное перемещение файлов на фтп (os windows 8)
|
Новый участник Сообщения: 41 |
Профиль | Отправить PM | Цитировать Цель: создать батник перемещения файлов с локальной папки на фтп сервер только с расширением *.opr
То есть есть некая папка в которую скапливаются файлы. Надо что бы раз в час (ну это я сделаю планировщиком) файлы с расширением .opr перемещались на фтп сервер в кодировке ASCII. Именно перемещались, а не копировались. Возможно ли это сделать стандартным консольным фтп? Файлы после копирования на сервер забираются от туда в течении часа и поэтому если сравнивать оба файла, то это должно быть на лету. Сделал я это сторонней утилитой wput.exe,но у нее есть некоторые недостатки 1. Она часто пропускает файлы особенно если их много скопилось и перемещает их не все. То есть 2-3 файла могут месяцами не передаваться потому, что она их тупо не видит наверное. 2. При копировании появляется окно команд которое раздражает работу сотрудников а следовательно и меня |
|
Отправлено: 11:57, 25-06-2013 |
Новый участник Сообщения: 41
|
Профиль | Отправить PM | Цитировать open
8.8.8.8 login password cd Local ascii mput l:\temp\*.opr bye но он только скопирует...как (переместить) удалить файлы с локального компьютера с проверкой, что они уже копировались... |
Отправлено: 13:04, 25-06-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 41
|
Профиль | Отправить PM | Цитировать ап
|
Отправлено: 13:56, 01-07-2013 | #3 |
Пользователь Сообщения: 124
|
Профиль | Отправить PM | Цитировать #Powershell script. #Don't forget unlock script executing by #using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted" $Folder2Ftp="C:\MyFolder\*" $FileExtMask="*.opt" $FtpCmdFile="c:\1.txt" $FileList=Get-ChildItem -Path $Folder2Ftp -Include $FileExtMask -Force "Получен список файлов для перемещения" foreach ($el in $FileList) { "open 8.8.8.8" | Out-File -FilePath $FtpCmdFile -Encoding ascii "login" | Out-File -FilePath $FtpCmdFile -Append -Encoding ascii "password" | Out-File -FilePath $FtpCmdFile -Append -Encoding ascii "cd Local" | Out-File -FilePath $FtpCmdFile -Append -Encoding ascii "put $el" | Out-File -FilePath $FtpCmdFile -Append -Encoding ascii "bye" | Out-File -FilePath $FtpCmdFile -Append -Encoding ascii "Команды для отправки файла $el сформированы" if ((cmd /c ftp -A -s:$FtpCmdFile | Select-String -Pattern "226 Transfer OK" -Encoding ascii) -ne $null) { "$el скопирован на ftp" $el | Remove-Item -Force "$el удалён с диска" } else { "Файл $el не скопировался на ftp. Удаления не будет" } } |
------- Отправлено: 16:53, 01-07-2013 | #4 |
Новый участник Сообщения: 41
|
Профиль | Отправить PM | Цитировать Надо переходить на ps )))спасибо!
Скрипт останавливается на "Получен список файлов для перемещения" А все из за того что в файле 1.txt создаются строки пути до файлов с пробелами без кавычек... то есть put C:\Users\user\AppData\Local\VirtualStore\Program Files (x86)\ как сделать так что бы строчка была после put была в кавычках? |
|
Последний раз редактировалось ~Cash~, 02-07-2013 в 16:13. Отправлено: 09:04, 02-07-2013 | #5 |
Пользователь Сообщения: 124
|
Профиль | Отправить PM | Цитировать Цитата ~Cash~:
|
|
------- Отправлено: 16:31, 02-07-2013 | #6 |
Новый участник Сообщения: 41
|
Профиль | Отправить PM | Цитировать Теперь трабла из за попадания в строку имен файлов на русском ...они заменяются вопросами в файле и не копируются
|
Отправлено: 09:15, 03-07-2013 | #7 |
Пользователь Сообщения: 124
|
Профиль | Отправить PM | Цитировать Цитата ~Cash~:
|
|
------- Отправлено: 17:31, 03-07-2013 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Не лучше ли взять пример (второй) от Ильи: PowerShell – работаем с FTP сервером | ILYA Sazonov: ITPro с нативной работой с ftp?!
|
Отправлено: 17:38, 03-07-2013 | #9 |
Пользователь Сообщения: 124
|
Профиль | Отправить PM | Цитировать Цитата sunnykey:
#Powershell script. #Don't forget unlock script executing by #using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted" $Folder2Ftp="D:\dl\*" $FileExtMask="*.opt" $FtpCmdFile="c:\1.txt" $FileList=Get-ChildItem -Path $Folder2Ftp -Include $FileExtMask -Force $WinSCP="D:\util2flash\winscp.com" "Получен список файлов для перемещения" foreach ($el in $FileList) { "open ftp://login:1@vtest" | Out-File -FilePath $FtpCmdFile "cd local" | Out-File -FilePath $FtpCmdFile -Append "put $el" | Out-File -FilePath $FtpCmdFile -Append "bye" | Out-File -FilePath $FtpCmdFile -Append "Команды для отправки файла $el сформированы" if ((cmd.exe "/c $WinSCP /script=$FtpCmdFile" | Select-String -Pattern "100%") -ne $null) { "$el скопирован на ftp" $el | Remove-Item -Force "$el удалён с диска" } else { "Файл $el не скопировался на ftp. Удаления не будет" } } Цитата Iska:
|
||
------- Отправлено: 10:18, 04-07-2013 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Пакетное переименование файлов | ArsenBespalov | Скриптовые языки администрирования Windows | 9 | 11-08-2016 03:56 | |
CMD/BAT - [решено] Пакетное переименование с создание сложных имён файлов | alexmoreman | Скриптовые языки администрирования Windows | 4 | 28-11-2011 02:27 | |
CMD/BAT - [решено] Создание папок по дате получения файлов и перемещение в них файлов | KamikadZZe | Скриптовые языки администрирования Windows | 1 | 01-09-2011 14:15 | |
Пакетное преобразование файлов | PCLAlex | AutoIt | 1 | 21-06-2011 10:09 | |
[решено] Перемещение Log-файлов в Windows Server 2003 | FATruden | Microsoft Windows NT/2000/2003 | 2 | 01-10-2009 12:12 |
|