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