2016-04-27 4 views
0

У меня есть пакетный скрипт Windows, который циклически перемещается по всем файлам в папке и загружается на ftp, а затем удаляет локальный файл. Это прекрасно работает, когда нет пробелов в имени файла:Windows Batch Удалить Локальный файл после загрузки

@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 %% е в ("D: \ локальный каталог с пробелами * .jpg") сделать ( @ECHO CD «/ удаленный каталог с пробелами /»& & @echo поставить "%% F" & & @echo %% F >> log.txt) >>% SCRIPT_NAME%

@echo бросить >>% SCRIPT_NAME%

@REM = сейчас звоните по FTP с нашим сгенерированным скриптом @ftp -s:% SCRIPT_NAME%

@REM = Удалить наш файл сценария временный и мы сделали @del% SCRIPT_NAME%/кв

для/ф "delims =" %% е в (журнал .txt) делают дель/д «%% F»

дель/д log.txt