Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Copy не принимает переменные

Ответить
Настройки темы
CMD/BAT - [решено] Copy не принимает переменные

Старожил


Сообщения: 279
Благодарности: 9

Профиль | Отправить PM | Цитировать


Изменения
Автор: Ultrix
Дата: 20-08-2014
Здравствуйте. Помогите, пожалуйста, разобраться с проблемой. Пишу скрипт, который должен запускаться раз в сутки и копировать файл на фтп-сервер в 2 разные папки под двумя разными именами. Этот файл обновляется и каждый раз у него разное имя. По идее проблема не большая, но я столкнулся с небольшой проблемой. Вот часть скрипта:

Код: Выделить весь код
 dir /b *.txt > Name.txt
set /p qwerty = <Name.txt

rem проверка содержимого переменной
set qwerty

copy "d:\na_ftp\%qwerty%" test.txt
в папке со скриптом (d:\na_ftp\) есть файл 1.txt, имя которого по первой строке скрипта валится в файл, а вторая строка задает из этого файла значение переменной, равное имени этого файла. собственно, последняя строка копирует файл в эту же папку с переименованием.
Так вот проблема заключается в том, что значение переменной не подставляется в параметры команды copy. Почему то подставляется пустое значение:

Код: Выделить весь код
 D:\na_ftp>output.bat
D:\na_ftp>dir /b *.txt  1>Name.txt
D:\na_ftp>set /p qwerty =  0<Name.txt
D:\na_ftp>set qwerty
qwerty =1.txt
D:\na_ftp>copy "d:\na_ftp\" test.txt
Не удается найти указанный файл.
даже если так: copy "%qwerty%" test.txt, то:

Код: Выделить весь код
 D:\na_ftp>copy "" test.txt
Системе не удается найти указанный путь.
Видно, что перемеренная получает правильное имя файла, а подставляется пустое значение. Подскажите, пожалуйста, так и должно быть? Если да, то как по-другому это реализовать?
PS даже если значение переменной задать вручную, то он ее все равно не подставляет

-------
И вот я начал познавать...


Отправлено: 07:10, 20-08-2014

 

Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Ultrix, без пробела:
Код: Выделить весь код
set /p qwerty= <Name.txt
!
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:54, 20-08-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 279
Благодарности: 9

Профиль | Отправить PM | Цитировать


Цитата Georgio:
без пробела: »
И чем я только думал, АГРРРХ на меня!! внимательность решает! Спасибо огромнейшее!

-------
И вот я начал познавать...


Отправлено: 08:01, 20-08-2014 | #3


Старожил


Сообщения: 279
Благодарности: 9

Профиль | Отправить PM | Цитировать


не хочу создавать еще одну тему, напишу здесь.
Дальше проблема в копировании на фтп.
батник:
Код: Выделить весь код
dir /b *.txt >Name.txt
set /p qwerty= <Name.txt
set qwerty
copy "%qwerty%" test.txt
ftp -s:ftp.txt -i %имя сервера%
del test.txt
ftp.txt:
Код: Выделить весь код
login
pass
cd public
mput d:\na_ftp\test.txt
quit
копирование на фтп проходит, файл там появляется, но дальше скрипт останавливается:
Код: Выделить весь код
D:\na_ftp>ftp -s:ftp.txt -i %имя сервера%
Связь с %имя сервера%.
220-TwoFTPd server ready.
220 Authenticate first.
Пользователь (%имя сервера%:(none)):
331 Send PASS.

230 Ready to transfer files.
ftp> cd public
250 Changed directory.
ftp> mput d:\na_ftp\test.txt
200 PORT command successful
Чего он ждет? не дополнительной же команды на завершение копирования? Если ждать минут 10, то:
Код: Выделить весь код
425 Connection failed: Connection timed out
ftp> quit
221 Bye.

D:\na_ftp>del test.txt
Как бы этого достаточно, скрипт делает то, что должен, но напрягает, что он отконнекчивается от фтп по истечении времени ожидания, а не по команде quit. Может после mput d:\na_ftp\test.txt еще что-то надо добавить?
И попутно еще вопрос: будет ли mput по-умолчанию заменять существующий файл с таким же именем на ФТП-сервере? если нет, то какой параметр еще указать надо?

-------
И вот я начал познавать...


Последний раз редактировалось Ultrix, 20-08-2014 в 08:45.


Отправлено: 08:31, 20-08-2014 | #4


Ветеран


Сообщения: 874
Благодарности: 575

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
login
pass
cd public
put d:\na_ftp\test.txt
disconnect
quit

Отправлено: 08:51, 20-08-2014 | #5


Старожил


Сообщения: 279
Благодарности: 9

Профиль | Отправить PM | Цитировать


Cпасибо, про дисконнект не знал.
Но все равно не работает.
Код: Выделить весь код
230 Ready to transfer files.
ftp> cd public
250 Changed directory.
ftp> put d:\na_ftp\test.txt
200 PORT command successful
425 Connection failed: Connection timed out
ftp> disconnect
221 Bye.
ftp> quit
Если во время ожидания ctrl+c нажать, то ожидание включается после команды дисконнект
Код: Выделить весь код
230 Ready to transfer files.
ftp> cd public
250 Changed directory.
ftp> put d:\na_ftp\test.txt
200 PORT command successful
Разрыв любых активных подключений...
ftp> disconnect
ftp> quit
Завершить выполнение пакетного файла [Y(да)/N(нет)]?
Но это ожидание немного меньше.
Попробовал вместо disconnect команду close - тоже не помогает.

-------
И вот я начал познавать...


Последний раз редактировалось Ultrix, 20-08-2014 в 09:28.


Отправлено: 09:09, 20-08-2014 | #6


Старожил


Сообщения: 279
Благодарности: 9

Профиль | Отправить PM | Цитировать


Еще мысль появилась. Может ли такое происходить от того, что фтп-сервер в пассивном режиме? как с таким режимом из cmd работать?
PS только что заметил, что файл, который создается при этом на ФТП-сервере - пустой (0 байт)

-------
И вот я начал познавать...


Последний раз редактировалось Ultrix, 20-08-2014 в 10:32.


Отправлено: 10:24, 20-08-2014 | #7


Старожил


Сообщения: 279
Благодарности: 9

Профиль | Отправить PM | Цитировать


Так и не победил я стандартную утилиту ftp, поюзал cURL, он нормально работает с пассивным режимом ФТП-сервера.
Код: Выделить весь код
curl.exe -T d:\na_ftp\test.txt ftp://%имя_сервера%/public/ --user user:password
Всем спасибо за участие!

-------
И вот я начал познавать...


Отправлено: 11:27, 20-08-2014 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Ultrix:
Так и не победил я стандартную утилиту ftp, поюзал cURL, он нормально работает с пассивным режимом ФТП-сервера. »
Именно так.

Отправлено: 17:45, 20-08-2014 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Copy не принимает переменные

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интернет - Не принимает пакеты waravva Microsoft Windows 2000/XP 3 21-07-2013 16:11
Прочее - [решено] Сетевая карта не отправляет и не принимает xkspy Сетевые технологии 4 07-12-2012 12:32
2003/XP/2000 - Не принимает почту... helden Microsoft Office (Word, Excel, Outlook и т.д.) 3 22-09-2011 15:55
Не принимает пароль... DerriK Сетевые технологии 1 08-09-2005 17:56
Не принимает номер Andruha1 Автоматическая установка Windows 2000/XP/2003 5 27-12-2004 22:23




 
Переход