尝试以递归方式从ftp下载特定文件并对它们运行命令

时间:2012-10-11 21:40:04

标签: windows powershell ftp cmd

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

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

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

有没有人有任何建议?

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用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
}

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

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