【问题标题】:Create directory or skip though ftp script创建目录或跳过 ftp 脚本
【发布时间】:2016-11-04 18:28:51
【问题描述】:

我正在登录 Adrive.com 帐户以上传备份文件。我不知道安装的linux版本。我尝试使用以下命令获取版本:

ftp> uname -r
Invalid command.
ftp> cat /etc/*-release
Invalid command.
ftp> lsb_release -a
Invalid command.
ftp> cat /proc/version
Invalid command.
ftp> uname -a
Invalid command.

如您所见,它们都不起作用。

这是我正在尝试运行的脚本:

ECHO open ftp://xxx:xxxx@ftp.adrive.com>FTPSND.TXT
echo cd backup>>FTPSND.TXT
echo cd companyfiles>>FTPSND.TXT
echo mkdir %3>>FTPSND.TXT
echo cd %3>>FTPSND.TXT
echo option transfer binary>>FTPSND.TXT
ECHO send %1>>FTPSND.TXT
ECHO close>>FTPSND.TXT
ECHO exit>>FTPSND.TXT
winscp.com /script=ftpsnd.txt >>%2

mkdir 上发生的错误:

Error creating folder 'BEL'.
File or directory already exists.
(A)bort, (R)etry, (S)kip: Abort

我的主要问题是,如果目录不存在,我需要创建它,否则我跳过这一步并继续发送。

有什么想法可以解决这个问题吗?

编辑

回应 Hackoo:

我没有提到这个批处理文件是从另一个接近结尾的批处理文件中调用的。当我使用您的代码时,我没有上传文件并且日志显示:

ftp> Open ftp.adrive.com
Connected to ftp.adrive.com.
220 Username is your email address used for web interface
User (ftp.adrive.com:(none)):
331 Username OK, please send password.

230 Welcome xxxxx
ftp> prompt n
Interactive mode Off .
ftp> bin
200 TYPE changed to I.
ftp> MkDir /backup/companyfiles/IFC
550 File or directory already exists.
ftp> cd /backup/companyfiles/IFC
250 Changed directory OK.
ftp> mput D:\SSSAVES\sssbackup\TMPDIR\IFC_20160705141154.ZIP
200 PORT command OK.
150 Opening BINARY mode data connection for file IFC_20160705141154.ZIP.

它并没有从这一点移动并做任何事情。我让它在那里坐了2个小时只是为了确保。该文件只有 70mb 大小,所以我怀疑它需要那么长时间。

编辑#2

该文件最终确实出现在 Adrive 上,所以我相信 ftp mput 可以正常工作。只是发送后似乎没有释放

编辑#3

我确实将它从 mput 更改为 put,因为我只发送 1 个文件。这并没有什么不同。

【问题讨论】:

  • 为什么需要知道主机运行的是什么操作系统?
  • @SomethingDark 知道如何处理 ftp 命令,所以我会知道我的选择是什么。
  • if not exist %3 mkdir %3
  • @Aacini Ty 回复。当我尝试这个时,我得到了ftp> if not exist %3 mkdir %3 Invalid command.
  • @Aacini Ty 回复。与我从 ftp 命令行运行它的方式以及您建议我运行它的方式没有任何区别。我确实把它放在我的脚本中,我得到了相同的结果。 echo 正在输出 ftp 命令而不是批处理命令,因此 if not exist 将无法作为 ftp 命令工作。

标签: linux batch-file ftp


【解决方案1】:

我在 ADrive.com 上创建了一个帐户,并创建了这个脚本,试一试

@echo off
Title Multiple file Upload by Hackoo on adrive
Color 0A
::****** Settings for FTP ************
Set FTPSERVER=ftp.adrive.com
Set USER=Your Login
Set Password=Your Password
Set LocalFolder=C:\Hackoo
Set RemoteFolder=/backupFolder
::************************************
::--- FTP commands below here ---
> ft.do echo Open %FTPSERVER%
>> ft.do echo %USER%
>> ft.do echo %Password%
>> ft.do echo prompt n
>> ft.do echo bin
>> ft.do echo lcd %LocalFolder%
>> ft.do echo MkDir %RemoteFolder%
>> ft.do echo cd %RemoteFolder%
>> ft.do echo mput "*.*"
>> ft.do echo disconnect
>> ft.do echo bye
::************************************
ftp -s:ft.do
del ft.do
Pause

【讨论】:

  • Ty 表示响应。我会试试看。
  • 我已根据您的回答修改了我的帖子。感谢您的帮助。
【解决方案2】:

你可以试试这个 vbscript 并告诉我它是否上传了这个大小为 70Mb 的文件:

set objShell = CreateObject("WScript.Shell")
Login = "Your Username"
'If your username contains the @ symbol, and your web browser does not support this, you can substitute for the +
Login = Replace(Login,"@","+")
Password = "Your Pass"
FTPSERVER = "ftp.server.com"
RemoteFolder = "RemoteFolderName"
FTPURL = "ftp://"& Login &":"& Password &"@"& FTPSERVER &"/"& RemoteFolder
Connect2FTP = objShell.run("Explorer "& FTPURL ,1,False)

我已经做了一个旧的 vbscript 来处理这种情况

说明:

您与朋友在不同的计算机上还是在网吧? 您想在 FTP 服务器上添加、修改、删除文件或文件夹吗? 没有机会,您手头没有像(FileZilla、CuteFTP、FlashFXP.等)这样的 FTP 客户端程序来访问您的私人 FTP 服务器! 没问题 => FTP Explorer 是在 FTP 客户端中打开 Web 浏览器或 Windows 资源管理器的解决方案!

我只是把这个旧的法语版本翻译成英语版本!

希望对你有帮助!

Titre = "FTP EXPLORER © Hackoo © 2016"
    Set objIE = CreateObject( "InternetExplorer.Application" )
    objIE.Navigate "about:blank"
    objIE.Document.Title = Titre
    objIE.ToolBar        = False
    objIE.Resizable      = False
    objIE.StatusBar      = False
    objIE.Width          = 320
    objIE.Height         = 390
    ScreenWidth = objIE.document.ParentWindow.screen.width 
    ScreenHeight = objIE.document.ParentWindow.screen.height
    objIE.Left = (ScreenWidth  - objIE.Width ) \ 2
    objIE.Top  = (ScreenHeight - objIE.Height) \ 2
    Do While objIE.Busy
        WScript.Sleep 200
    Loop
    objIE.Document.Body.InnerHTML = "<div align=""center""><p><h3 style='color:Red'>UserName " _
    & "<br><input type=""text"" style='color:Blue' size=""20"" " _
    & "id=""Login"" value=""put your user name here""></h3></p>"_
    & "</p><p><h3 style='color:Red'>Password<br><input type=""password"" style='color:Blue' value=""Put your password here"" size=""20"" " _
    & "id=""Password""></h3></p><p><input type=" _
    & """hidden"" id=""OK"" name=""OK"" value=""0"">" _
    & "<h3 style='color:Red'>FTP Server " _
    & "<br><input type=""text"" style='color:Blue' size=""20"" " _
    & "id=""FTPSERVER"" value=""ftp.server.com""></h3>"_
    & "<br><h3 style='color:Red'>Remote Folder "_
    & "<br><input type=""text"" style='color:Blue' size=""20"" " _
    & "id=""DossierDistant"" value=""/www""></h3></p>"_
    & "<input type=""submit"" value="" Browse your FTP Folder"" " _
    & "onclick=""VBScript:OK.Value=1""></p></div>"
    objIE.Document.Body.Style.overflow = "auto"
    objIE.Document.body.style.backgroundcolor="lightGreen"
    objIE.Visible = True
    objIE.Document.All.Password.Focus
    On Error Resume Next
    Do While objIE.Document.All.OK.Value = 0
        WScript.Sleep 200
        If Err Then    
            IELogin = Array( "", "" )
            objIE.Quit
            Set objIE = Nothing
            wscript.quit
        End if
    Loop
    On Error Goto 0
    Set ws = CreateObject("wscript.Shell")
    Login = objIE.Document.All.Login.Value
    Login = Replace(Login,"@","+")'If your username contains the @ symbol, and your web browser does not support this, you can substitute for the +
    Password = objIE.Document.All.Password.Value
    FTPSERVER = objIE.Document.All.FTPSERVER.Value
    DossierDistant = objIE.Document.All.DossierDistant.Value
    URL = "ftp://"&Login&":"&Password&"@"&FTPSERVER&"/"&DossierDistant
    Connect2FTP = ws.run("Explorer "& URL ,1,False)
    objIE.Quit
ws.Popup "Connecting to "&qq(FTPSERVER)&" is in progress ..........",3,"Connecting to "&qq(FTPSERVER)&" is in progress ..........",64
    Set objIE = Nothing
    Set ws = Nothing
    Close("iexplore.exe")
'****************************************************
Sub Close(Process)
    Set Ws = CreateObject("Wscript.Shell")
    Command = "cmd /c Taskkill /F /IM "&Process&""
    Execution = Ws.Run(Command,0,True)
End Sub
'****************************************************
Function qq(strIn) 
    qq = Chr(34) & strIn & Chr(34)
End Function
'****************************************************

【讨论】:

    猜你喜欢
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多