【问题标题】:trying to download specific files from ftp recursively and run a command on them尝试从 ftp 递归下载特定文件并在其上运行命令
【发布时间】:2012-10-11 21:40:03
【问题描述】:

我正在尝试从 ftp 位置下载具有特定文件名的每个文件,对其运行命令然后将其删除。

例如:从“\some\random\ftp\location”下载每个看起来像“*_qwerty.jpeg”的文件,然后对其运行命令。一旦命令完成,删除它。我也需要脚本忽略所有 other.jpeg 文件。

我正在尝试在 Windows CMD 或 Powershell 中执行此操作

有人有什么建议吗?

【问题讨论】:

  • 到目前为止你尝试过什么?你想出了什么代码?你想在它上面运行什么命令?它是本机 PowerShell 命令还是脚本?你问的问题听起来并不难,但如果有更多信息,就会更容易为你提供帮助。

标签: windows powershell ftp cmd


【解决方案1】:

最简单的方法是使用 Ftp.exe 并用参数文件驱动它。使用 mget 下载带有通配符的文件。用 foreach 循环迭代文件并做一些事情。像这样,

<commandfile>
lcd <path-to-local-dir>
open <ftp-site>
<username>
<password>
bin
cd <path-to-remote-dir>
prompt
mget <filename-with-wildcards>
close
bye

在Powershell中使用命令文件很简单:

Ftp -s:<commandfile>
foreach($i in gci <path-to-images>) {
  <do-something> $i
}

您也可以对批处理脚本执行相同的操作(记住在脚本中使用双%,在命令行中使用单%)。

Ftp -s:<commandfile>
for /f "tokens=*" %j in ('dir /b <path-to-images') do <do-something> %j

【讨论】:

  • 我的下一个问题是 部分。我会输入本地路径还是ftp?如果是 ftp,我该如何输入?
  • 我尝试只运行“ftp -s:”部分。它接受命令文件中的所有参数,但返回以下消息“找不到远程文件列表”。这些文件存储在该位置的不同子目录中。这可能是问题吗?
  • 当然是指FTP保存图片的本地目录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多