2015-02-17 3 views
0

Мне нужен пакетный файл для преобразования всех файлов в папку и ее подпапок в нижний регистр. Например:пакетный файл для преобразования имен файлов в нижний регистр

Here Is StackOverflow.txt 

к

here is stackoverflow.txt 

Кусок имени файла в скобках. Можно ли пренебречь им и оставить его в прежнем состоянии? например

Here Is [A WEBSITE CALLED] StackOverflow.txt 

в

here is [A WEBSITE CALLED] stackoverflow.txt 

ответ

4

легко сделать с JREN.BAT - гибридным JScript/пакетный сценарий, который переименовывает файлы посредством обычной замены выражения. JREN.BAT - это чистый сценарий, который запускается изначально на любом компьютере с Windows XP.

Чтобы просто преобразовать все имена файлов в нижний регистр:

jren "^" "" /l /s 

Если вы хотите весь текст в квадратных скобках в верхний регистр, и все остальное, чтобы быть в нижнем регистре, то это легко сделать с помощью двух команд

jren "^" "" /l /s 
jren "[.+?]" "uc($0)" /j /s 

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

jren "([^[]*)(\[.*?\])*" "lc($1?$1:'')+($2?$2:'')" /j /s 

Поскольку JREN пакетный сценарий, вы должны использовать CALL JREN если вы хотите использовать команду внутри другого пакетного сценария.

Используйте jren /?, чтобы получить справку по всем доступным параметрам.

+0

Как мне работать с кодами по этой ссылке? Я скопировал пакетную часть этого кода (от «@echo off» до «exit/b») и сохранил его как jren.bat и в той же папке, которую я написал в командной строке: jren /? и ничего не произошло. –

+0

@ livingbeing - Весь код идет в JREN.BAT: как пакетный, так и JScript-код. Отсюда и термин «гибридный JScript/пакет». Хотя если вы скопировали только часть партии правильно в ANSI-кодированное имя файла jren.bat, тогда 'jren /?' Должен распечатать справку. Но в противном случае сценарий будет бесполезен, если в нем не содержатся как пакетный код, так и код JScript. – dbenham

+0

Работал как чемпион! –

2
@echo off 
setlocal EnableDelayedExpansion 

rem Start the recursive process over the tree 
call :processThisDir 
goto :EOF 


:processThisDir 

rem Process all filenames in this folder and separate they in three parts 
for /F "tokens=1-3 delims=[]" %%a in ('dir /B /A-D') do (
    set "left=%%a" & set "right=%%c" 

    rem Convert left and right parts to lower case 
    for %%l in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
     set "left=!left:%%l=%%l!" 
     set "right=!right:%%l=%%l!" 
    ) 

    rem Rename this file 
    ren "%%a[%%b]%%c" "!left![%%b]!right!" 
) 

rem Recursively process the folders in this folder 
for /D %%a in (*) do (
    cd "%%a" 
    call :processThisDir 
    cd .. 
) 

exit /B 
+0

Не работает. Код dbenham выполнил эту работу. +1 для рассмотрения этого вопроса. –

Смежные вопросы