Показать сообщение отдельно
Старый 17.06.2014, 15:29     # 106
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 377

Borland - Гад и сволочь
Цитата:
Сообщение от 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
Ограничения:
  1. Батник должен работать в той же кодировке, в которой текстовый файл (соответственно, "chcp 866" для OEM нужно заменить для ANSI на chcp 1251"; UTF-8 не поддерживается)
  2. Длина строки не проверяется - берётся целиком первая непустая
  3. Строка не должна содержать символов, недопустимых в наименовании файла (в частности слэшей, двоеточия и т.п.)
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий

Borland вне форума