Почему моя команда не работает в файле .bat?

Итак, моя цель - переместить определенный тип файла в одну папку. Затем в этой папке найдите все дубликаты и удалите их.

Я придумал это:

for /r C:\users\ %%f in (*.jpg) do @copy "%%f" C:\test\ /y 
c:\tools\sfk sel -dir c:\test\ -file .jpg +dup +del!

Первая часть работает, она перемещает все .jpg в "тестовую" папку, но затем не выполняет вторую часть. Вторая часть была сделана с использованием SFK, она находит дубликаты и удаляет их в командной строке, но не в .bat.


person user3443466    schedule 20.03.2014    source источник


Ответы (1)


Команда не будет работать из командного файла, если активно отложенное раскрытие, поскольку синтаксический анализатор удалит восклицательные знаки. Отключите его перед командой sfk

for /r C:\users\ %%f in (*.jpg) do @copy "%%f" C:\test\ /y 
setlocal disabledelayedexpansion
c:\tools\sfk sel -dir c:\test\ -file .jpg +dup +del!
endlocal
person MC ND    schedule 20.03.2014