Управление psftp в пакетном файле Windows

Как написать командный файл для управления psftp, но с динамическим именем файла? В целом я пытаюсь преобразовать видеофайл, а затем загрузить его на свой Apple TV. Вот что у меня есть, он вообще работает, но команды не управляют psftp, psftp просто ждет ввода пользователя:

echo Convert and Upload to Apple TV file Called %1.mkv

ffmpeg -i %1.mkv -vcodec mpeg4 -acodec ac3 -ab 384k -sameq -s hd720 -t 60 %1.avi

psftp [email protected] -pw aaa
cd downloads/boxee
put %1.avi
quit

Я знаю с флагом -b psftp может вызывать его собственный пакетный файл, но я не знаю, как получить аргумент% 1. Я видел решения, в которых текстовый файл перенаправляется на psftp, но это страдает от одной и той же проблемы. Кроме того, я бы предпочел иметь только один файл, но для вызова второго файла было бы хорошо.

Ответ 1

Я закончил создание нового командного файла из основного, который я тогда сказал psftp:

echo cd downloads/boxee > psftp.bat
echo put "%1.avi" >> psftp.bat
echo quit >> psftp.bat

psftp [email protected] -pw aaa -b psftp.bat

Ответ 2

Укажите файл, содержащий командные команды

При нормальной работе PSFTP представляет собой интерактивную программу, которая отображает командную строку и принимает команды с клавиатуры.

Если вам нужны автоматические задачи с помощью PSFTP, вы, вероятно, предпочтете заранее указать набор команд и выполнить их автоматически. Опция -b позволяет это сделать. Вы используете его с именем файла, содержащим командные команды. Например, вы можете создать файл с именем myscript.scr, содержащий такие строки:

cd /home/ftp/users/jeff
del jam-old.tar.gz
ren jam.tar.gz jam-old.tar.gz
put jam.tar.gz
chmod a+r jam.tar.gz
quit

а затем вы можете запустить script, набрав

psftp [email protected] -b myscript.scr

Кредит http://the.earth.li/~sgtatham/putty/0.52/htmldoc/Chapter6.html#6.1.3

Ответ 3

Все в одном файле:

@echo off
echo Convert and Upload to Apple TV file Called %1.mkv
ffmpeg -i %1.mkv -vcodec mpeg4 -acodec ac3 -ab 384k -sameq -s hd720 -t 60 %1.avi
(
echo cd downloads/boxee
echo put %1.avi
echo quit
) | psftp [email protected] -pw aaa -bc

Если нам нужен точный номер порта:

psftp [email protected] -P 222 -pw aaa -bc

Ответ 4

Почему бы не использовать встроенную команду FTP, которая поставляется с окнами?

вам нужно будет написать script, который выгрузит файл:

открыть 192.168.1.50
пользователь
передний ряд ааа
положить файл .avi
quit

затем вызовите ftp -s: MyScript

Вам нужно будет сгенерировать script для каждого файла с помощью эха и перенаправления → .

Ответ 5

Если все, что вы делаете с ftp, загружает один файл, вы можете использовать pscp.

echo Convert and Upload to Apple TV file Called %1.mkv

ffmpeg -i %1.mkv -vcodec mpeg4 -acodec ac3 -ab 384k -sameq -s hd720 -t 60 %1.avi
pscp -pw aaa -sftp %1.avi [email protected]:/downloads/boxee

Ответ 6

Я пытался запустить простой пакетный файл / script, чтобы конечный пользователь загрузил файл, который только что редактировал на безопасный FTP-сайт.

Использование этого Script:

cd /outgoing
put Examplefile.txt
# chmod a+r Examplefile.txt
# ren Examplefile.txt Exam.ted
# rm Examplefile.txt
quit

и запустить команду PuTTY sftp из стандартной командной строки Windows:

psftp [email protected] -pw password -b testscript.scr

Я смог быстро и (что более важно!!) легко загрузить файл из компании, в которой я работаю, для компании, с которой нам нужно было вести бизнес. Вы также можете увидеть, что я готов переименовать файл, если необходимо (ren), или при необходимости удалить файл (rm). Символ хеша (#) устанавливает строки как строки замечаний.

Это позволило мне создать полный пакетный файл в Windows, который конечный пользователь мог просто щелкнуть, чтобы загрузить файлы по мере их создания. Это было намного проще, чем использование некоторых других "вкусов" sftp, которые я нашел в "Сети", и я использовал и доверял PuTTY в течение десятилетий.