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

Posted

技术标签:

【中文标题】CMD/FTP 使用到今天的日期创建文件夹并将 ftp 下载连接到创建的文件夹【英文标题】:CMD/FTP to create folder using to today date & connect ftp download into created folder 【发布时间】:2019-03-08 06:19:44 【问题描述】:

我是这个 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

重命名.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 环境。此方法再次不适用于批处理文件。请帮忙

【问题讨论】:

“我确实尝试将我的命令分成两批” - 所以在你的问题中表明这一点。您在那里有一个脚本,它可以更新工作(并且您自己不知道)。 --- “下载的文件没有进入我创建的文件夹” - 那么它去哪里了? --- 试试cd /D C:\%name% @MartinPrikryl 我已经编辑了我的主要帖子。下载的文件进入 c:\documents & setting。我认为原因是因为我 cd c:\%name% 在第一批。但我的问题是我无法在 ftp 环境中 cd c:\%name% 因为 %name% 在 ftp 环境中无法识别。 【参考方案1】:

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

我不确定如何解决它,但实际上您不需要将 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

【讨论】:

你不觉得set "name=%date:~-10,2%-%date:~7,2%-%date:~-4,4%_job"会比set name=%date:~-10,2%"-"%date:~7,2%"-"%date:~-4,4%"_job"好吗? 嗯,当然。但是我已经从 OP 的代码中复制了那部分。它与问题无关。 好的,没问题,只是观察:) 感谢您的建议。我会尽快测试并在这里更新【参考方案2】:

我决定发布此内容,虽然与给出的答案相似,但存在一些差异。

它会创建文本文件,然后将其删除,(这使所有内容更便携)。 我已经更正了您的目录名称,(因为错字)

@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

【讨论】:

感谢您的想法。我会测试并更新

以上是关于CMD/FTP 使用到今天的日期创建文件夹并将 ftp 下载连接到创建的文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何查找上周日的日期并将其保存在Windows批处理文件的变量中

过滤 json 数据并将结果数据重新加载到 myTableView

将今天日期与生日/假期数组进行比较的 JS 函数

如何通过读取文本文件中提到的日期计算到今天的总天数?

如何从单元格中提取日期并将其与今天的日期进行比较

在 VBA 中,我如何创建一个匹配 2 张工作表中的日期并将数据作为值粘贴到匹配日期的代码?不能为此使用 vlookup