我有以下代码,它根据今天的日期创建一个文件夹,并将文件从文件夹移动到新文件夹。我有以下代码:

set date="%date:~7,2%%date:~4,2%%date:~10,4%" 
set mydir=%date% 
cd "C:\Users\rnan\Desktop\Batch Files\Tess\File History\" 
mkdir "C:\Users\rnan\Desktop\Batch Files\Tess\File History\%mydir%" 
"C:\Program Files (x86)\WinSCP\WinSCP.com" /command ^ 
"open ftp://rnan:J13@Files8.cyberlynk.net/tess/" ^ 
"lcd ""C:\Users\rnan\Desktop\Batch Files\Tess\File History\%mydir%""" ^  
"get *.csv>1D" ^  
"exit"  

此代码创建一个文件夹,但不会将任何文件复制到新创建的文件夹中。文件正在从 FTP 服务器复制到新文件夹。请提出一些复制这些文件的更改。

谢谢!

请您参考如下方法:

您的代码总体上是正确的(@Jeff 指出的 date 变量滥用除外)。

您很可能在 ^ 周围有错误的空格。 .

  • ^必须是该行的最后一个字符。你在 ^ 后面好像有空格在线与 lcdget .
  • ^ 后面的行必须以空格开头。您在以下行中没有任何空格。

  • 参见 WinSCP 常见问题 Why are some scripting commands specified on WinSCP command-line in a batch file not executed/failing?

    同样不仅你不应该分配给 date多变的。你甚至不应该用这种方式来格式化时间戳,如 date 的格式。特定于语言环境的变量。见 Creating a file name as a timestamp in a batch job .所以,你最好使用另一种方法。

    WinSCP itself supports date formatting使用其 %TIMESTAMP%句法。

    以下代码修复了 ^ 的问题并使用 WinSCP 可靠地格式化日期:
    set TIMESTAMP_FORMAT=yyyy-mm-dd 
    cd "C:\Program Files (x86)\WinSCP" 
    for /F "tokens=* USEBACKQ" %%F in (`WinSCP.com /command "echo %%TIMESTAMP#%TIMESTAMP_FORMAT%%%" "exit"`) do set TIMESTAMP=%%F 
    set mydir=C:\Users\rnan\Desktop\Batch Files\Tess\File History\%TIMESTAMP% 
    mkdir "%mydir%" 
    WinSCP.com /command ^ 
        "open ftp://rnan:J13@Files8.cyberlynk.net/tess/" ^ 
        "lcd ""%mydir%""" ^ 
        "get *.csv>1D" ^ 
        "exit"  
    


    评论关闭
    IT干货网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!