Можно ли передать переменную в файл сценария Windows FTP? - PullRequest
12 голосов
/ 02 марта 2011

У меня есть пакетный скрипт, который динамически создает некоторые файлы и генерирует четыре файла с несколько случайными именами файлов в зависимости от времени, даты и т. Д. Затем необходимо загрузить этот файл на сервер через FTP.

На данный момент мой .bat-файл имеет строку типа "ftp -s: ftp.txt".Ftp.txt содержит несколько довольно простых скриптов FTP: что-то вроде этого -

open ftp.myserver.com
username
password
put filename1.dat
put filename2.dat
put filename3.dat
put filename4.dat

Что я хотел бы сделать, это передать имена файлов, которые должны быть загружены, а затем заменить «put filename1».dat "with" put% file1% "- где% file1% - передаваемая переменная имени файла.

Возможно ли это?Кто-нибудь знает, как это сделать?Или весь мой подход неверен?

Ответы [ 3 ]

16 голосов
/ 02 марта 2011

Вы можете сгенерировать файл ftp.txt на лету с вашим файлом bat. Просто сделайте что-то вроде:

echo ftp.myserver.com>ftp.txt
echo username>>ftp.txt
echo password>>ftp.txt
echo put filename1.dat>>ftp.txt
echo put filename2.dat>>ftp.txt
echo put filename3.dat>>ftp.txt
echo put filename4.dat>>ftp.txt
ftp -s:ftp.txt

Конечно, теперь, когда вы находитесь в файле bat, вы можете использовать переменные окружения и другие вещи вместо «filenameX.dat»

Например:

echo put %file1% >>ftp.txt
2 голосов
/ 03 июня 2013

Чтобы обновить ответ, вот обновленный пакетный файл. Обратите внимание на исключение пробела после имени пользователя и пароля (так как он пропускает пробел на сайт ftp). Это также будет использовать аргумент, переданный в командный файл.

echo open ftp.myserver.com>ftp.txt
echo username>>ftp.txt
echo password>>ftp.txt
echo put %1>>ftp.txt
echo quit>>ftp.txt
ftp -s:ftp.txt
0 голосов
/ 02 марта 2011

Я не думаю, что FTP-клиент командной строки в Windows достаточно умен, чтобы выполнять интерполяцию переменных среды / оболочки в командах.Но вы могли бы иметь управляющий файл .bat, который будет генерировать сценарий ftp динамически и делать переменные, пока вы все еще на уровне оболочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...