从FTP请求解释远程文件路径

时间:2013-11-13 15:27:52

标签: shell powershell ftp cmd

我有以下保存为CMD脚本的FTP请求。有用。我想在PowerShell中编写一个执行相同操作的FTP请求。为了使PowerShell脚本能够工作,我需要指定我想要获取的远程文件的地址。

这是CMD脚本。从这看,你能说出文件路径是什么吗?仅供参考,如果这很重要:这是从AS400中提取的。

@echo off
setlocal
set uname=USERNAME
    set passw=USERPASS
    set hostname=AS400NAME
    set filespec=SPECNAME
echo %uname%>                     TEST.ftp
echo %passw%>>                    TEST.ftp
echo cd DIRECTORYNAME>>           TEST.ftp
echo binary>>                     TEST.ftp
echo get %filespec%>>             TEST.ftp
echo bye>>                        TEST.ftp
ftp -s:TEST.ftp %hostname%
if errorlevel 1 pause
endlocal

1 个答案:

答案 0 :(得分:1)

您需要重新组装该脚本中的关键变量,以便在PowerShell中构建新字符串。我相信你在提供的脚本中有所需的部分:

$uname = "USERNAME"
$passw = "USERPASS"
$hostname = "AS400NAME"
$filespec = "SPECNAME"
$dir = "DIRECTORYNAME"

您只需将它们拼凑在一起即可构建有效的FTP URI:

$uri = "ftp://$uname`:$passw@$hostname/$dir/$filespec"

在PowerShell中,用双引号括起来的字符串将在内部扩展变量。与连续连接相比,它使字符串更清晰。

最后一步是检索文件。我建议使用WebClient类:

$wc = New-Object System.Net.WebClient
$wc.DownloadFile($uri, "C:\temp\$filespec")