igor_andreev
спасибо за совет ! вставил!)))
спасибо за совет ! вставил!)))
@echo off
setlocal
for %%a in (*.*) do call :renfile "%%a"
goto :EOF
:renfile
set "file=%~1"
set "file=%file: =_%"
if not "%file%"=="%~1" ren "%~1" "%file%"
(01) [Berliner Philharmoniker - Karl Böhm] Sinfonie Nr. 26 in Es-Dur, KV 184 - I. Molto presto.ape
KapralBel
а реально ли в цикле не только добавить _ а еще и сократить имя?
Реально:
Код:
Цитата: @echo off
setlocal
for %%a in (*.*) do call :renfile "%%a"
goto :EOF
:renfile
for /f "tokens=1,2* delims=[]" %%b in (%1) do set "file=%%b%%d"
set "file=%file: = %"
set "file=%file: =_%"
if not "%file%"=="%~1" ren "%~1" "%file%"
еще бы разобратся как он (код) исполняет нужное
Давай разбираться :
Первый цикл for идет по всем файлам в текущей директории и для каждого вызывает виртуальный батник :renfile, передавая ему в качестве аргумента имя этого файла.
Внутри :renfile - цикл for в первой строке позволяет разделить переданное имя файла на 3 части - до символа "[", после "[" и до "]", после символа "]". Первая и третья части соединяются и записываются в переменную file ( set "file=%%b%%d" ).
Так как до "[" и после "]" в оригинальном названии были пробелы, в новом названии ( в переменной), в месте соединения частей у нас оказались два пробела подряд. Чтобы от них избавиться, обрабатываем переменную file - запускаем следующую команду set "file=%file: = %", то есть заменяем любые два пробела идущие один за другим (два пробела до знака "=") на один пробел (после знака "="). Теперь займемся заменой пробелов на знаки подчеркиванья - set "file=%file: =_%", используется та же конструкция, заменяем " " на "_". После этого в переменной файл у нас то название, которое нам и было нужно.
На всякий случай проверяем отличается ли название в переменной от оригинального названия (мало ли - может там и не было пробелов и квадратных скобок) и если отличается - переименовываем файл.
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
Предыдущая тема: Problemi s zagruzkoy XP!