Можно ли передать переменную в файл Windows FTP script?
У меня есть пакет script, который динамически создает некоторые файлы и генерирует четыре файла с несколькими случайными именами файлов на основе времени, даты и т.д. Затем ему необходимо загрузить этот файл на сервер через FTP.
Как сейчас, в моем .bat файле есть строка, подобная "ftp -s: ftp.txt". Ftp.txt содержит довольно простой файл FTP script: что-то вроде этого -
open ftp.myserver.com
username
password
put filename1.dat
put filename2.dat
put filename3.dat
put filename4.dat
То, что я хотел бы сделать, это передать имена файлов, которые необходимо загрузить, а затем заменить "put filename1.dat" на "put% file1%" - где% file1% - это переменная имени файла, передаваемая в.
Возможно ли это? Кто-нибудь знает, как это сделать? Или мой подход неправильный?
Ответы
Ответ 1
Вы можете сгенерировать файл 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
Чтобы обновить ответ, здесь обновлен командный файл. Обратите внимание на исключение пробела после имени пользователя и пароля (при прохождении пробела на 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
Ответ 3
Я не думаю, что FTP-клиент командной строки в Windows достаточно умен, чтобы выполнять интерполяцию переменных среды/оболочки в командах. Но вы можете заставить управляющий файл .bat генерировать ftp script динамически и делать переменную, пока вы все еще находитесь на уровне оболочки.