CMD / FTP使用今天日期创建文件夹并将ftp下载连接到创建的文件夹

问题描述 投票:1回答:2

我是这个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环境。此方法再次不适用于批处理文件。请帮忙

batch-file cmd ftp
2个回答
0
投票

似乎启用了命令扩展,子批处理文件设置的工作目录将丢失,然后批处理文件退出。

我不知道如何解决它,但实际上你不需要将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


0
投票

我决定发布这个,虽然类似于给出的答案,但有一些不同之处。

  • 它创建文本文件,然后删除它(这使一切更便携)。
  • 我已更正您的目录名称(因为拼写错误)。

@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
© www.soinside.com 2019 - 2024. All rights reserved.