Цитата:
Сообщение от vnepom
автоматически переименовать группу файлов по содержимому первой строки файлов (10-25 символов)
|
Пришлось решать и такую задачу...
Код:
@echo off
chcp 866
set "WORKFOLDER=D:\папка с\файлами для обработки"
pushd "%WORKFOLDER%"||exit
for /f %%A in ('dir /b /A:-D *.txt') do (
call :GNN "%%A"
call :RENAMEIT "%%A"
)
popd
set "NEWNAME="
set "WORKFOLDER="
goto :EOF
:GNN
set "NEWNAME="
for /f "tokens=*" %%B in (%~1) do call :SNN "%%~B"
goto :EOF
:RENAMEIT
IF EXIST "%NEWNAME%%~x1" (
call :AE "%NEWNAME%%~x1" "%~1"
) ELSE (
ren "%~1" "%NEWNAME%%~x1"
set "NEWNAME="
)
goto :EOF
:SNN
if "%NEWNAME%*"=="*" set "NEWNAME=%~1"
goto :EOF
:AE
echo File %1 already exists, can't rename %2 into %1.
echo Press any key to exit.
pause>nul
set "NEWNAME="
set "WORKFOLDER="
exit
Ограничения:
- Батник должен работать в той же кодировке, в которой текстовый файл (соответственно, "chcp 866" для OEM нужно заменить для ANSI на chcp 1251"; UTF-8 не поддерживается)
- Длина строки не проверяется - берётся целиком первая непустая
- Строка не должна содержать символов, недопустимых в наименовании файла (в частности слэшей, двоеточия и т.п.)