#batch-file #file-rename
#пакетный файл #файл-переименовать
Вопрос:
Мне нужно переименовать все файлы в папке, добавив «BV» перед именем файлов. Мой код функционирует, но проблема возникает, когда общий объем файла в этой папке превышает около 200 файлов. Он переименует все файлы в это: «BV_BV_BV …» и это не остановится.
Вот мой код:
@echo off amp; setlocal
ECHO Moechten Sie das wirklich tun? (Bereits vorhandene Bildverzeichnisse werden geloescht
ECHO und in den Dateinamen wird AWK2 hinzugefuegt) (j / n)
SET /p wahl=
if '%wahl%' == 'n' goto Nein
if '%wahl%' == 'j' goto Ja
:Ja
ECHO on
FOR %%I IN (*.bmp) DO ren "%%I" BV_"%%~nI".bmp
pause
Я не уверен, как я могу остановить пакетный файл после того, как все файлы были переименованы. Спасибо за вашу помощь.
Комментарии:
1. Если вы прочитаете строку чуть выше
SET /p
@Gerhard, я собираюсь предложитьAWK2
вместо этого,Do you really want to do that? (Pre-existing image directories will be deleted and AWK2 added to the filename) (y / n)
2.1.
for
буферизует некоторые имена файлов, переименовывает их, а затем читает следующие, поэтому файлы могут переименовываться несколько раз; чтобы избежать этого, используйтеfor /F "delims= eol=|" %%I in ('dir /B /A:-D-H-S "*.bmp"') do ren "%%I" "BV_%%~nxI"
; этот метод сначала получает весь список файлов, прежде чем какой-либо из них будет переименован. 2.set "wahl=" amp; set /P wahl=""
. 3.if /I "%wahl%"=="n" goto nein
. 4. Где:nein
? 5. Вместо того, чтобыset /P
рассмотреть возможность использованияchoice
для таких запросов «да» / «нет»…
Ответ №1:
Предполагая, что вы хотите переименовать все файлы один раз, с префиксом BV_
согласно вашему примеру в for
цикле. Обратите внимание, я использовал choice
вместо set /p
@echo off amp; setlocal
ECHO Moechten Sie das wirklich tun? (Bereits vorhandene Bildverzeichnisse werden geloescht
ECHO und in den Dateinamen wird AWK2 hinzugefuegt) (j / n)
choice /c jn /m "wahl"
goto opt%errorlevel%
:opt1
for /f "delims=" %%I IN ('dir /b /a-d *.bmp ^| findstr /v /b "BV_"') do ren "%%~I" "BV_%%~I"
goto :eof
:opt2
echo do what ever you need to do here.