我是这个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环境。此方法再次不适用于批处理文件。请帮忙
似乎启用了命令扩展,子批处理文件设置的工作目录将丢失,然后批处理文件退出。
我不知道如何解决它,但实际上你不需要将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
。
我决定发布这个,虽然类似于给出的答案,但有一些不同之处。
@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