000 articles/bat..php

Для начала хочу порекомендовать замечательную статью Урок bat-аники, благодаря которой я переделаю несколько BAT файлов.

Несколько полезных BAT файлов

r00.bat - r0000.bat, r0d.bat, r00cat.bat & r00catl.bat

-

Числовые зкмены: x на 0x, xx на 0xx и xxx на 0xxx

переименовка файлов (ren) и папок (move) начинающихся с %1, где %1 - постоянная часть имени файла. может быть опущена Использование: r00.bat [filename] где filename - неизменяемая часть имени файла без расширения

Пример: r00.bat image переименует все файлы image0-image9 в image00-image09 соответственно

r00.bat - r0000.bat

-

в текущем каталоге

r00.bat, r0000.bat и r0000.bat дают на выходе 0x, 0xx и 0xxx соответственно

Длина численной части в имени ВАТника определяет длину численной части в именах файлов на выходе. Все файлы добавляют по 1 знаку в имя, если необходимо преобразование из 1.jpg в 0001.jpg необходимо запустить все 3 последовательно.

r00.bat

с 0 по 9 - результат %10.*

Sample hide @echo off FOR /L %%f IN (0,1,9) DO ( ren %1%%f.* %10%%f.* move %1%%f %10%%f )

r000.bat

с 00 по 99 - результат %100.*

Sample hide @echo off ::call r00 FOR /L %%f IN (0,1,9) DO ( ren %10%%f.* %100%%f.* move %1%%f %100%%f ) FOR /L %%f IN (10,1,99) DO ( ren %1%%f.* %10%%f.* move %1%%f %10%%f )

r0000.bat

с 000 по 999 - результат %1000.*

Sample hide @echo off ::call r00 FOR /L %%f IN (0,1,9) DO ( ren %10%%f.* %100%%f.* move %1%%f %100%%f ) FOR /L %%f IN (10,1,99) DO ( ren %1%%f.* %10%%f.* move %1%%f %10%%f )

r0d.bat

тоже что и r00.bat %1 - папка с файлами %2 - постоянная часть имени файла заход в %1 и переименовка файлов начинающихся с %2

Sample hide :: %1 - папка с файлами :: %2 - постоянная часть имени файла :: заход в %1 и переименовка файлов начинающихся с %2 cd %1 FOR /L %%f IN (0,1,9) DO ren %2%%f.* %20%%f.* cd ..

r00cat.bat

и

r00catl.bat

-

в подкаталогах

используют файл r00.bat для Пример: r00.bat image Результат будет различен для двух файлов:

r00cat.bat

Обходит текущий каталог, все подкаталоги и все вложенные в них переименует все файлы image0-image9 в image00-image09 соответственно во всех каталагах начиная с текущей

Sample hide :: Обходит текущий каталог, все подкаталоги и все вложенные в них :: использует файл r00.bat :: %1 - постоянная часть имени файла :: переименовка файлов и папок начинающихся с %1 :: с 0 по 9 :: результат %10.* :: Использование: r00cat.bat filename :: где filename - неизменяемая часть имени файла без расширения :: Пример: r00.bat image :: переименует все файлы image0-image9 в image00-image09 :: соответственно во всех каталагах начиная с текущей for /R %%f IN (.) DO ( cd %%f call r00.bat %1 cd .. )

r00catl.bat

Обходит все подкаталоги текущего каталога, но не вложенные в него переименует все файлы image0-image9 в image00-image09 соответственно во всех подкаталагах текущего каталога

Sample hide :: Обходит все подкаталоги текущего каталога, но не вложенные в него :: использует файл r00.bat :: %1 - постоянная часть имени файла :: переименовка файлов и папок начинающихся с %1 :: с 0 по 9 :: результат %10.* :: Использование: r00cat.bat filename :: где filename - неизменяемая часть имени файла без расширения :: Пример: r00.bat image :: переименует все файлы image0-image9 в image00-image09 :: соответственно во всех подкаталагах текущего каталога for /D %%f IN (*.*) DO ( cd %%f call r00.bat %1 cd .. )

r00.bat

и

r03.bat

- заменены r00cat.bat или r00catl.bat в связке с r00.bat

rUnCat.bat

-

Избавление от вложенности

Переименовка файлов в подкаталогах и перемещение их на текущий уровень, с удалением самих подкаталогов. Формат имени фала на выходе: "ИмяКаталога-ИсходноеИмя.Расширение", если присутствует дополнительный вложенный подкаталог его указать, как параметр. Использование: rUnCat.bat [dir] где [dir] - имя вложенной папки

 Пример: rUnCat.bat images
 было:
 site\
  dir1\
   images\
    img01.jpg
    ...
    img0x.jpg
 ...
  dirX\
   images\
    img01.jpg
    ...
    img0x.jpg
 стало:
 site\
  dir1-img01.jpg
  ...
  dir1-img0x.jpg
  ...
  dirX-img01.jpg
  ...
  dirX-img0x.jpg
Sample hide for /D %%d IN (*.*) DO ( cd %%d IF NOT "%1"=="" (cd %1) FOR %%f IN (*.*) DO ( ren %%f.* %%d-%%f.* move %%d-%%f.* .. ) IF NOT "%1"=="" ( cd .. rd %1 move *.* .. ) cd .. rd %%d )

%1 - необязательный параметр, нужный для указания дополнительной вложеннности подкаталогов

dub.bat

- побайтовое сравнение

Есть такая старая, но замечательная утилита dub.exe, но она работает только с короткими именами. Этот небольшой ВАТничек, который "укорачивает" имена

Sample hide @c:\util\dub %~s1 %~s2