1

Я перебираю определенный каталог, и если zip-файл или файлы существуют, они перемещаются во вторичную папку в этом каталоге, однако приведенный ниже код не работает, т. Е. Не перемещает файл. Что я делаю неправильно?

for %%i in (D:\test\*.*) do if %%~xi == ".zip" move /Y "D:\test\%%~ni%%~xi" "D:\test\complete"

1 ответ1

3

При сравнении расширений файлов поместите расширение текущего файла в кавычки, например, так:

for %%i in (D:\test\*.*) do if "%%~xi" == ".zip" move /Y "D:\test\%%~ni%%~xi" "D:\test\complete"

Я проверил это, и он отлично работает.

Чтобы использовать подпрограмму, попробуйте это:

for %%i in (D:\test\*.*) do call :checkextension %%i

:checkextension
if "%~x1" == ".zip" move /Y "%~1" "D:\test\complete"
goto:eof

Обратите внимание, как путь к каждому файлу (%%i) передается в качестве параметра подпрограмме :checkextension , которая затем обращается к нему как %~1 (или %~x1 когда требуется только расширение).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .