@echo off
setlocal
pushd "C:\New folder" || exit /b 1
for %%A in (*.zip) do if exist "%%~nA" (
pushd "%%~nA" && (
move /y "..\%%~nxA"
popd
)
)
popd
pause
Используя move
, как видите, не нужно copy
и del
ZIP-файл.Аргумент /y
автоматически перезапишет существующий файл без приглашения.
Initial pushd
изменяет текущий каталог, иначе выходит с errorlevel
1.
Цикл for
повторяется через каждый zipимя файла.Он проверяет, существует ли имя файла без расширения, которое, как ожидается, будет папкой.Если существует, pushd
в каталог, а затем move
ZIP-файл из родительского каталога в текущий каталог.popd
восстановит прежний каталог.
Выполняет финальный popd
, чтобы восстановить исходный текущий каталог.