Если zip-файл и имя папки совпадают, скопируйте zip-файл в папку - PullRequest
0 голосов
/ 03 декабря 2018

У меня много .zip файлов и папок, некоторые из них имеют одинаковые имена.Я проверю имя файла zip и имя папки, если оно совпадает.Я скопирую zip-файл в папку и удалю zip-файл.

Можно ли автоматизировать процесс?

Я нашел следующий код, но не смог его отредактировать:

@echo off
setlocal EnableDelayedExpansion
pushd "C:\New folder"
FOR %%G IN (*.zip DO (
    FOR /F "tokens=1 delims= " %%a IN ("%%G") do (
        set "outFolder=%%a Random Center"
        for /D %%i in (*.*) do (
            for /F "tokens=1 delims= " %%b IN ("%%i") do (
                if "%%a"=="%%b" set "outFolder=%%i"
            )
        )
        if not exist "!outfolder!" md "!outfolder!"
        move "%%G" "!outfolder!"
    )
)
popd
pause

Создает папку Random Center и копирует в нее все zip-файлы, которые мне не нужны.

1 Ответ

0 голосов
/ 04 декабря 2018
@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, чтобы восстановить исходный текущий каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...