[Batch/CMD] bat файл для переименования папок соответственно их содержимому

  • Автор темы Автор темы hawker
  • Дата начала Дата начала
  • Теги Теги
    bat

hawker

Новый пользователь
Сообщения
12
Реакции
0
есть множество папок, в которых содержатся видеоролики или фотографии. папок, в которых одновременно содержатся и видеоролики и фотографии, нет. нужно написать bat файл, который будет для всех подпапок той папки, в которой он будет запущен, добавлять к существующему названию подпапки слово «видео», если в подпапке видеоролик и слово «фото», если в подпапке фотографии. для подпапок с фотографиями добавлять к слову «фото» число, равное количеству фотографий в подпапке.
 
есть множество папок, в которых содержатся видеоролики или фотографии. папок, в которых одновременно содержатся и видеоролики и фотографии, нет. нужно написать bat файл, который будет для всех подпапок той папки, в которой он будет запущен, добавлять к существующему названию подпапки слово «видео», если в подпапке видеоролик и слово «фото», если в подпапке фотографии. для подпапок с фотографиями добавлять к слову «фото» число, равное количеству фотографий в подпапке.
Для создания bat-файла, который будет добавлять слово "видео" или "фото" к названию подпапок в зависимости от содержимого, вам понадобится использовать команду for /d для обхода всех подпапок в указанной директории, а также команды dir и find для проверки содержимого каждой подпапки. Вот пример bat-файла, который выполняет описанную задачу:

Код:
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переименование
set "folder_path=путь_к_папке"

REM Перебираем все подпапки в указанной папке
for /d %%G in ("%folder_path%\*") do (
    set "is_video=false"
    set "is_photo=false"
    set "photo_count=0"

    REM Проверяем содержимое каждой подпапки
    for /r "%%G" %%F in (*) do (
        REM Проверяем, есть ли видеоролики
        if "%%~xF"==".mp4" (
            set "is_video=true"
        )
        REM Проверяем, есть ли фотографии
        if "%%~xF"==".jpg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".jpeg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".png" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
    )

    REM Переименовываем подпапку в зависимости от содержимого
    if !is_video! (
        ren "%%G" "%%~nG_видео"
    )
    if !is_photo! (
        ren "%%G" "%%~nG_фото_!photo_count!"
    )
)

Прежде чем запустить этот bat-файл, убедитесь, что вы указали правильный путь к папке в переменной folder_path.
 
ничего не происходит. путь к папке указан правильно
Извините за предыдущую ошибку. Возможно, проблема возникла из-за того, что bat-файл не может переименовывать папку, в которой он сам находится. Попробуйте использовать этот исправленный вариант:

Код:
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переименование
set "folder_path=путь_к_папке"

REM Перебираем все подпапки в указанной папке
for /d %%G in ("%folder_path%\*") do (
    set "is_video=false"
    set "is_photo=false"
    set "photo_count=0"

    REM Проверяем содержимое каждой подпапки
    for /r "%%G" %%F in (*) do (
        REM Проверяем, есть ли видеоролики
        if "%%~xF"==".mp4" (
            set "is_video=true"
        )
        REM Проверяем, есть ли фотографии
        if "%%~xF"==".jpg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".jpeg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".png" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
    )

    REM Переименовываем подпапку в зависимости от содержимого
    if !is_video! (
        pushd "%%G"
        ren "%%~nxG" "%%~nG_видео"
        popd
    )
    if !is_photo! (
        pushd "%%G"
        ren "%%~nxG" "%%~nG_фото_!photo_count!"
        popd
    )
)

Если проблема остается, пожалуйста, предоставьте больше информации о структуре папок и содержимом, чтобы я мог помочь вам лучше.
 
Для создания bat-файла, который будет добавлять слово "видео" или "фото" к названию подпапок в зависимости от содержимого, вам понадобится использовать команду for /d для обхода всех подпапок в указанной директории, а также команды dir и find для проверки содержимого каждой подпапки. Вот пример bat-файла, который выполняет описанную задачу:

Код:
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переименование
set "folder_path=путь_к_папке"

REM Перебираем все подпапки в указанной папке
for /d %%G in ("%folder_path%\*") do (
    set "is_video=false"
    set "is_photo=false"
    set "photo_count=0"

    REM Проверяем содержимое каждой подпапки
    for /r "%%G" %%F in (*) do (
        REM Проверяем, есть ли видеоролики
        if "%%~xF"==".mp4" (
            set "is_video=true"
        )
        REM Проверяем, есть ли фотографии
        if "%%~xF"==".jpg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".jpeg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".png" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
    )

    REM Переименовываем подпапку в зависимости от содержимого
    if !is_video! (
        ren "%%G" "%%~nG_видео"
    )
    if !is_photo! (
        ren "%%G" "%%~nG_фото_!photo_count!"
    )
)

Прежде чем запустить этот bat-файл, убедитесь, что вы указали правильный путь к папке в переменной folder_path.
ничего не происходит. путь к папке указан правильно
 
ничего не происходит. путь к папке указан правильно
Извините за предыдущую ошибку. Возможно, проблема возникла из-за того, что bat-файл не может переименовывать папку, в которой он сам находится. Попробуйте использовать этот исправленный вариант:

Код:
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переименование
set "folder_path=путь_к_папке"

REM Перебираем все подпапки в указанной папке
for /d %%G in ("%folder_path%\*") do (
    set "is_video=false"
    set "is_photo=false"
    set "photo_count=0"

    REM Проверяем содержимое каждой подпапки
    for /r "%%G" %%F in (*) do (
        REM Проверяем, есть ли видеоролики
        if "%%~xF"==".mp4" (
            set "is_video=true"
        )
        REM Проверяем, есть ли фотографии
        if "%%~xF"==".jpg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".jpeg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".png" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
    )

    REM Переименовываем подпапку в зависимости от содержимого
    if !is_video! (
        pushd "%%G"
        ren "%%~nxG" "%%~nG_видео"
        popd
    )
    if !is_photo! (
        pushd "%%G"
        ren "%%~nxG" "%%~nG_фото_!photo_count!"
        popd
    )
)

Если проблема остается, пожалуйста, предоставьте больше информации о структуре папок и содержимом, чтобы я мог помочь вам лучше.
 
Извините за предыдущую ошибку. Возможно, проблема возникла из-за того, что bat-файл не может переименовывать папку, в которой он сам находится. Попробуйте использовать этот исправленный вариант:

Код:
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переименование
set "folder_path=путь_к_папке"

REM Перебираем все подпапки в указанной папке
for /d %%G in ("%folder_path%\*") do (
    set "is_video=false"
    set "is_photo=false"
    set "photo_count=0"

    REM Проверяем содержимое каждой подпапки
    for /r "%%G" %%F in (*) do (
        REM Проверяем, есть ли видеоролики
        if "%%~xF"==".mp4" (
            set "is_video=true"
        )
        REM Проверяем, есть ли фотографии
        if "%%~xF"==".jpg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".jpeg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".png" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
    )

    REM Переименовываем подпапку в зависимости от содержимого
    if !is_video! (
        pushd "%%G"
        ren "%%~nxG" "%%~nG_видео"
        popd
    )
    if !is_photo! (
        pushd "%%G"
        ren "%%~nxG" "%%~nG_фото_!photo_count!"
        popd
    )
)

Если проблема остается, пожалуйста, предоставьте больше информации о структуре папок и содержимом, чтобы я мог помочь вам лучше.
есть папка E:\test
в этой папке находятся подпапки, в некоторых из которых содержатся видеоролики, в других — фотографии.
нужно написать bat, который добавит к названию подпапок, в которых содержатся видеоролики, слово «видео», а к подпапкам, в которых содержатся фотографии, — слово «фото». к слову « фото» должно быть добавлено число, равное количеству фотографий в подпапке
 
есть папка E:\test
в этой папке находятся подпапки, в некоторых из которых содержатся видеоролики, в других — фотографии.
нужно написать bat, который добавит к названию подпапок, в которых содержатся видеоролики, слово «видео», а к подпапкам, в которых содержатся фотографии, — слово «фото». к слову « фото» должно быть добавлено число, равное количеству фотографий в подпапке
Вот пример bat-файла, который выполняет задачу добавления слова "видео" или "фото" к названию подпапок в зависимости от содержимого:

Код:
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переименование
set "folder_path=E:\test"

REM Перебираем все подпапки в указанной папке
for /d %%G in ("%folder_path%\*") do (
    set "is_video=false"
    set "is_photo=false"
    set "photo_count=0"

    REM Проверяем содержимое каждой подпапки
    for /r "%%G" %%F in (*) do (
        REM Проверяем, есть ли видеоролики
        if "%%~xF"==".mp4" (
            set "is_video=true"
        )
        REM Проверяем, есть ли фотографии
        if "%%~xF"==".jpg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".jpeg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".png" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
    )

    REM Переименовываем подпапку в зависимости от содержимого
    if !is_video! (
        ren "%%G" "%%~nG_видео"
    )
    if !is_photo! (
        ren "%%G" "%%~nG_фото_!photo_count!"
    )
)

Прежде чем запустить этот bat-файл, убедитесь, что вы указали правильный путь к папке в переменной folder_path.
 
Вот пример bat-файла, который выполняет задачу добавления слова "видео" или "фото" к названию подпапок в зависимости от содержимого:

Код:
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переименование
set "folder_path=E:\test"

REM Перебираем все подпапки в указанной папке
for /d %%G in ("%folder_path%\*") do (
    set "is_video=false"
    set "is_photo=false"
    set "photo_count=0"

    REM Проверяем содержимое каждой подпапки
    for /r "%%G" %%F in (*) do (
        REM Проверяем, есть ли видеоролики
        if "%%~xF"==".mp4" (
            set "is_video=true"
        )
        REM Проверяем, есть ли фотографии
        if "%%~xF"==".jpg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".jpeg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".png" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
    )

    REM Переименовываем подпапку в зависимости от содержимого
    if !is_video! (
        ren "%%G" "%%~nG_видео"
    )
    if !is_photo! (
        ren "%%G" "%%~nG_фото_!photo_count!"
    )
)

Прежде чем запустить этот bat-файл, убедитесь, что вы указали правильный путь к папке в переменной folder_path.
не работает, к сожалению. ничего не происходит.
 
не работает, к сожалению. ничего не происходит.
Приношу извинения за предыдущие ошибки. Пожалуйста, попробуйте следующий вариант bat-файла:

```bat
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переименование
set "folder_path=E:\test"

REM Перебираем все подпапки в указанной папке
for /d %%G in ("%folder_path%\*") do (
set "is_video=false"
set "is_photo=false"
set "photo_count=0"

REM Проверяем содержимое каждой подпапки
for %%F in ("%%G\*") do (
REM Проверяем, есть ли видеоролики
if "%%~xF"==".mp4" (
set "is_video=true"
)
REM Проверяем, есть ли фотографии
if "%%~xF"==".jpg" (
set "is_photo=true"
set /a "photo_count+=1"
)
if "%%~xF"==".jpeg" (
set "is_photo=true"
set /a "photo_count+=1"
)
if "%%~xF"==".png" (
set "is_photo=true"
set /a "photo_count+=1"
)
)

REM Переименовываем подпапку в зависимости от содержимого
if !is_video! (
 
Приношу извинения за предыдущие ошибки. Пожалуйста, попробуйте следующий вариант bat-файла:

```bat
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переименование
set "folder_path=E:\test"

REM Перебираем все подпапки в указанной папке
for /d %%G in ("%folder_path%\*") do (
set "is_video=false"
set "is_photo=false"
set "photo_count=0"

REM Проверяем содержимое каждой подпапки
for %%F in ("%%G\*") do (
REM Проверяем, есть ли видеоролики
if "%%~xF"==".mp4" (
set "is_video=true"
)
REM Проверяем, есть ли фотографии
if "%%~xF"==".jpg" (
set "is_photo=true"
set /a "photo_count+=1"
)
if "%%~xF"==".jpeg" (
set "is_photo=true"
set /a "photo_count+=1"
)
if "%%~xF"==".png" (
set "is_photo=true"
set /a "photo_count+=1"
)
)

REM Переименовываем подпапку в зависимости от содержимого
if !is_video! (
похоже, сообщение не целиком отправилось
 
похоже, сообщение не целиком отправилось
Приношу извинения за предыдущие ошибки. Пожалуйста, попробуйте следующий вариант bat-файла:

```bat
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переименование
 
Приношу извинения за предыдущие ошибки. Пожалуйста, попробуйте следующий вариант bat-файла:

```bat
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переимен
 
Приношу извинения за предыдущие ошибки. Пожалуйста, попробуйте следующий вариант bat-файла:

Код:
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переимен
[/QUOTE][/QUOTE]
Приношу извинения за предыдущие ошибки. Вот полный вариант bat-файла:

```bat
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переименование
set "folder_path=E:\test"

REM Перебираем все подпапки в указанной папке
for /d %%G in ("%folder_path%\*") do (
    set "is_video=false"
    set "is_photo=false"
    set "photo_count=0"

    REM Проверяем содержимое каждой подпапки
    for %%F in ("%%G\*") do (
        REM Проверяем, есть ли видеоролики
        if "%%~xF"==".mp4" (
            set "is_video=true"
        )
        REM Проверяем, есть ли фотографии
        if "%%~xF"==".jpg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".jpeg" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
        if "%%~xF"==".png" (
            set "is_photo=true"
            set /a "photo_count+=1"
        )
    )

    REM Переименовываем подпапку в зависимости от содержимого
    if !is_video! (
        ren "%%G" "%%~nG_видео"
    )
    if !is_photo! (
        ren "%%G" "%%~nG_фото_!photo_count!"
    )
)

Убедитесь, что вы указали правильный путь к папке в переменной folder_path. Если проблема остается, пожалуйста, предоставьте больше информации о структуре папок и содержимом, чтобы я мог помочь вам лучше.
 
Приношу извинения за предыдущие ошибки. Пожалуйста, попробуйте следующий вариант bat-файла:

```bat
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переименование
где должен находиться это bat файл? в той же директории, в которой лежат папки, которые нужно переименовать? или в другой?
 
где должен находиться это bat файл? в той же директории, в которой лежат папки, которые нужно переименовать? или в другой?
Bat-файл может находиться в любой директории на вашем компьютере. Он может быть размещен в той же директории, где находятся папки, которые вы хотите переименовать, или в любой другой директории.

Если bat-файл находится в той же директории, что и папки, которые нужно переименовать, то вам нужно указать только название bat-файла при его запуске. Например, если bat-файл называется "rename_folders.bat", то в командной строке вы можете просто написать:

Код:
rename_folders.bat

Если bat-файл находится в другой директории, то вам нужно указать полный путь к bat-файлу при его запуске. Например, если bat-файл находится в директории "C:\scripts" и называется "rename_folders.bat", то в командной строке вы должны написать:

Код:
C:\scripts\rename_folders.bat

Надеюсь, это поможет вам запустить bat-файл и выполнить переименование папок.
 
Приношу извинения за предыдущие ошибки. Для выполнения bat-файла, убедитесь, что вы правильно указали путь к папке, в которой нужно выполнить переименование. Вам также необходимо сохранить bat-файл с расширением ".bat".

Если вы хотите выполнить bat-файл в командной строке, откройте командную строку и перейдите в директорию, где находится bat-файл, с помощью команды "cd". Затем введите имя bat-файла и нажмите Enter. Например:

Код:
cd C:\путь_к_папке
rename_folders.bat

Если bat-файл все еще не работает, пожалуйста, предоставьте больше информации о любых ошибках или сообщениях, которые вы получаете, чтобы я мог помочь вам лучше.
 
сработал вот такой скрипт:
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переименование
set "folder_path=E:\test"

REM Перебираем все подпапки в указанной папке
for /d %%G in ("%folder_path%\*") do (
set "is_video=false"
set "is_photo=false"
set "photo_count=0"

REM Проверяем содержимое каждой подпапки
for %%F in ("%%G\*") do (
REM Проверяем, есть ли видеоролики
if "%%~xF"==".mp4" (
set "is_video=true"
)
REM Проверяем, есть ли фотографии
if "%%~xF"==".jpg" (
set "is_photo=true"
set /a "photo_count+=1"
)
if "%%~xF"==".JPG" (
set "is_photo=true"
set /a "photo_count+=1"
)
if "%%~xF"==".jpeg" (
set "is_photo=true"
set /a "photo_count+=1"
)
if "%%~xF"==".JPEG" (
set "is_photo=true"
set /a "photo_count+=1"
)
if "%%~xF"==".png" (
set "is_photo=true"
set /a "photo_count+=1"
)
if "%%~xF"==".PNG" (
set "is_photo=true"
set /a "photo_count+=1"
)
)

REM Переименовываем подпапку в зависимости от содержимого
if !is_video!==true (
ren "%%G" "%%~nG_видео"
)
if !is_photo!==true (
ren "%%G" "%%~nG_фото_!photo_count!"
)
)
 
сработал вот такой скрипт:
@echo off
setlocal enabledelayedexpansion

REM Укажите путь к папке, в которой нужно выполнить переименование
set "folder_path=E:\test"

REM Перебираем все подпапки в указанной папке
for /d %%G in ("%folder_path%\*") do (
set "is_video=false"
set "is_photo=false"
set "photo_count=0"

REM Проверяем содержимое каждой подпапки
for %%F in ("%%G\*") do (
REM Проверяем, есть ли видеоролики
if "%%~xF"==".mp4" (
set "is_video=true"
)
REM Проверяем, есть ли фотографии
if "%%~xF"==".jpg" (
set "is_photo=true"
set /a "photo_count+=1"
)
if "%%~xF"==".JPG" (
set "is_photo=true"
set /a "photo_count+=1"
)
if "%%~xF"==".jpeg" (
set "is_photo=true"
set /a "photo_count+=1"
)
if "%%~xF"==".JPEG" (
set "is_photo=true"
set /a "photo_count+=1"
)
if "%%~xF"==".png" (
set "is_photo=true"
set /a "photo_count+=1"
)
if "%%~xF"==".PNG" (
set "is_photo=true"
set /a "photo_count+=1"
)
)

REM Переименовываем подпапку в зависимости от содержимого
if !is_video!==true (
ren "%%G" "%%~nG_видео"
)
if !is_photo!==true (
ren "%%G" "%%~nG_фото_!photo_count!"
)
)
Отлично, рад, что скрипт заработал для вас! Внеслись некоторые изменения в проверку расширений файлов, чтобы учесть различные регистры. Теперь скрипт будет работать с файлами .jpg, .jpeg, .png в любом регистре.

Если у вас возникнут еще вопросы или потребуется дополнительная помощь, пожалуйста, не стесняйтесь обратиться.
 
Назад
Сверху Снизу