CMD / FTP для создания папки с использованием текущей даты и подключения загрузки FTP в созданную папку - PullRequest
1 голос
/ 08 марта 2019

Я новичок в этой команде cmd / FTP.Я хотел бы создать новую папку в своем локальном каталоге, используя сегодняшнюю дату, и подключиться к FTP, чтобы загрузить определенный файл во вновь созданную папку.Если я вручную ввожу команду один за другим в cmd, это не проблема.Но когда я запускаю командный файл, моя команда останавливается на FTP.

setlocal enableextensions
set name=%date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4"_"job%
mkdir C:\%name%
cd C:\%name%
ftp
open 192.168.31.93
*user*
*password*
binary
cd *directory*
mget -i *.*

Я попытался разделить мою команду на две партии;1. создание папки 2. загрузка по FTP, но загруженный файл не попадает в созданную мной папку.скачанный файл отправлялся в C: \ Document & Settings.

основной пакетный файл

@echo off
call rename.bat
ftp -i -s:ftp.txt

rename.bat

setlocal enableextensions
set name=%date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4%"_job"
mkdir c:\%name%
cd c:\%name%

ftp.txt

open 192.168.31.93
*user*
*password*
binary
cd *directory*
mget *.*
close

Другой метод, который я пробую, - это использование!в среде FTP создайте папку и вернитесь обратно в среду FTP.Этот метод снова не работает с командным файлом.Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Я решил опубликовать это, хотя, как и в случае с ответом, есть несколько отличий.

  • Создает текстовый файл, затем удаляет его, (это сохраняетвсе более переносимое) .
  • Я исправил имя вашего каталога, (из-за опечатки) .

@Echo Off
Set "Name=%DATE%"
Set "Name=%Name:~-10,2%-%Name:~-7,2%-%Name:~-4%_job"
MD "C:\%Name%" 2>Nul
CD /D "C:\%Name%" || Exit /B
(   Echo open 192.168.31.93
    Echo *user*
    Echo *password*
    Echo binary
    Echo cd *directory*
    Echo mget *.*
    Echo close
)>"ftp.txt"
FTP -i -s:ftp.txt
Del "ftp.txt" 2>Nul
Exit /B
0 голосов
/ 08 марта 2019

Кажется, что с включенными расширениями команд рабочий каталог, заданный дочерним пакетным файлом, теряется, а затем пакетный файл завершается.

Я не уверен, как ее решить, но на самом деле вам не нужен файл rename.bat, чтобы быть отдельным файлом. Этот "основной пакетный файл" должен работать:

@echo off
setlocal enableextensions
set name=%date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4%"_job"
mkdir c:\%name%
cd /d c:\%name%
ftp -i "-s:%~dp0\ftp.txt"

Также обратите внимание на /d, добавленное к cd. Без этого ваша партия не будет работать при запуске с другого диска. Вы также должны использовать %~dp0 для ссылки на папку пакетного файла для ftp.txt. Во время вызова ftp вы перешли в целевой каталог.


Возможно, вам даже не нужно включать расширения команд. Так что простое удаление setlocal enableextensions также может решить проблему. Хотя вам все еще нужны %~dp0 и /d.

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