我有以下代码,它根据今天的日期创建一个文件夹,并将文件从文件夹移动到新文件夹。我有以下代码:
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 变量滥用除外)。
您很可能在 ^ 周围有错误的空格。 .
^必须是该行的最后一个字符。你在 ^ 后面好像有空格在线与 lcd和 get . ^ 后面的行必须以空格开头。您在以下行中没有任何空格。 参见 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"




