2017-04-21 26 views
2

我有以下代碼可以根據當前日期創建一個文件夾,並將文件從文件夾移動到新文件夾。我有以下代碼:根據今天的日期創建一個文件夾,並使用批處理文件將文件複製到新文件夾中

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:[email protected]/tess/"^
"lcd ""C:\Users\rnan\Desktop\Batch Files\Tess\File History\%mydir%"""^
"get *.csv>1D"^
"exit" 

此代碼創建一個文件夾,但不會將任何文件複製到新創建的文件夾。正在將文件從FTP服務器複製到新文件夾。請提出一些更改來複制這些文件。

謝謝!

+1

'date'是一個rserved系統變量。改變它需要您自擔風險! – Magoo

+0

@Magoo我如何在這裏更改日期?我只是用它來命名我的文件夾。非常感謝:/ – qwerty

+2

您的第一行是分配給變量日期。它是一個系統變量,應該視爲它是隻讀的。 –

回答

1

您的代碼通常是正確的(除了date變量誤用,正如@Jeff指出的那樣)。

你很可能在^周圍出現錯誤的空格。

  • ^必須是最後一個字符。您似乎在lcdget的行上有^之後的空格。
  • ^之後的行必須以空格開頭。下列行中沒有任何空格。

也不僅你不應該分配到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:[email protected]/tess/"^
    "lcd ""%mydir%"""^
    "get *.csv>1D"^
    "exit" 
+0

它只是下載文件,而不是創建文件夾。 – qwerty

+0

是的,我沒有...... – qwerty

+0

所以向我們展示批處理文件輸出(截圖)。 –

0

我沒有安裝WinSCP賦予,所以這是未經測試,但爲什麼不試試呢?

set datetime=%date:~7,2%%date:~4,2%%date:~10,4% 
set "mydir=C:\Users\rnan\Desktop\Batch Files\Tess\File History\%datetime%" 
mkdir "%mydir%" 
"C:\Program Files (x86)\WinSCP\WinSCP.com" /command^
    "open ftp://rnan:[email protected]/tess/"^
    "lcd ""%mydir%"""^
    "get *.csv>1D"^
    "exit" 
+0

「lcd」行中的'^'後面仍有空格。 –

+0

對不起,我會看到,如果我測試它,但沒有安裝winscp。謝謝! –

+0

@GerhardBarnard是的,我嘗試過你的,它創建了2個獨立的文件,並顯示了我之前提到的未知命令的錯誤 – qwerty

相關問題