2016-04-27 57 views
0

我有一個windows批處理腳本,它循環瀏覽文件夾中的所有文件並上傳到ftp,然後刪除本地文件。當有文件名沒有空格這個偉大的工程:Windows批量上傳後刪除本地文件

@for %%f in (D:\local\file\path\nospaces\*.jpg) do (
    @echo cd /remote/file/path/nospaces/ && @echo put %%f && @echo !del %%f 
)>> %SCRIPT_NAME% 

當引入空間,我能夠獲得通過的路徑周圍的報價要上傳的文件,但當地不會刪除:

@for %%f in ("D:\local directory with spaces\*.jpg") do (
    @echo cd "/remote directory with spaces/" && @echo put "%%f" && @echo !del "%%f" 
)>> %SCRIPT_NAME% 

有人能指出我正確的方向嗎?

謝謝!

+0

我還應該說明我得到的錯誤: 「系統找不到指定文件」 – jgcc2016

+0

您可以檢查ftp.exe的結果並在下面一行中刪除它,如下所述:http://stackoverflow.com/a/18579970/5920627 – kay27

+0

在第二個示例中,嘗試使用'「%%〜f」'而不是''%% f「'(兩次)... – aschipfl

回答

0
@for %%f in ("D:\local directory with spaces\*.jpg") do (
    @echo cd "/remote directory with spaces/" && @echo put "%%f" && @echo !echo "%%f">log.txt 
)>> %SCRIPT_NAME% 

ftp.exe -s:%SCRIPT_NAME% 

for /f "delims=" %%f in (log.txt) do del /q "%%f" 

del /q log.txt 
+0

只需稍作更改,就可以工作。謝謝! – jgcc2016

0

這是我結束了:

@for %% F IN( 「d:\本地目錄與空間* .JPG」)做( @echo CD「用空格/遠程目錄/」 & & @echo把 「%% F」 & & @echo %% F >> log.txt的)>>%SCRIPT_NAME%

@echo退出>>%SCRIPT_NAME%

@REM =現在用我們生成的腳本調用[email protected] -s:%SCRIPT_NAME%

@REM =刪除我們的臨時腳本文件,我們正在這樣做 @del%SCRIPT_NAME%/ Q

FOR/F 「delims =」 %%的F(日誌.TXT)做DEL/q「%% F」

德爾/ q log.txt的