Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Переименование файлов по маске (http://forum.oszone.net/showthread.php?t=278195)

tobornforlife@vk 22-02-2014 17:04 2313709

Переименование файлов по маске
 
День добрый. Только учусь. Перерыл все форумы, но особо в тестами ни к чему не пришел. Очень надеюсь на вашу аудиторию

Цель такая:

В корневом каталоге Имеются 2 папки: system и shots.

При каждом запуске bat-a все jpg ( появляются в папке system ежедневно автоматически с именем shot00001.jpg ) они копируются в /shots, но

так, как файлы имеют одинаковые имена они не добавляются после первого дня.

нужно сделать так:

сначала, чтобы в папке /shots все имеющеися файлы приводились в такой вид Shot_X_001.jpg ( где X - Дата создания! )

затем соответственно с /system копироваться новые файлы будут легко


for %%f in (shots\*.jpg) do ren "%%f" %date%*.jpg

не работает, да много чего пробЫвал.

Очень надеюсь на вас) спасибо заранее!

Iska 22-02-2014 18:28 2313759

Проще создавать папки с именем даты в каталоге «shots» и перемещать (а не копировать) туда файлы.

tobornforlife@vk 23-02-2014 16:13 2314256

Цитата:

Цитата Iska
Проще создавать папки с именем даты в каталоге «shots» и перемещать (а не копировать) туда файлы. »

Это намного проще, но так нельзя(

Georgio 24-02-2014 05:08 2314591

Код:

@echo off
for /f "tokens=1,2,3 delims=./" %%f in ("%date%") do (
 set d=%%h.%%g.%%f
)
setlocal enabledelayedexpansion
for /f "tokens=2,3 delims=_" %%f in ('
 dir /a-d /b /o-n shots^| findstr Shot_[0-9]*\.[0-1][0-9]\.[0-3][0-9]_[0-9]*\.jpg
') do (
  if "%%f"=="%d%" (
    for /f "tokens=* delims=0" %%h in ("%%g") do (
    set n=%%h
    set n=!n:.jpg=!
    goto:#
)) else (
    set n=0
    goto:#
))
:#
for /f "tokens=*" %%f in ('
  dir /a-d /b shots^| findstr shot[0-9]*\.jpg
') do (
  set /a n+=1
  if !n! lss 10 (
    ren shots\%%f Shot_%d%_00!n!.jpg
) else (
  if !n! lss 100 (
    ren shots\%%f Shot_%d%_0!n!.jpg
 ) else (
    if !n! lss 1000 (
    ren shots\%%f Shot_%d%_!n!.jpg
  ) else (
    echo ЌҐў®§¬®¦*® ЇҐаҐЁ¬Ґ*®ў*вм Ї® ¤***®¬г *«Ј®аЁв¬г Ў®«ҐҐ 999 д*©«®ў ў бгвЄЁ.
    echo Ќ*¦¬ЁвҐ «оЎго Є«*ўЁиг ¤«п ўл室*.
    pause>nul
    goto:##
))))
:##
endlocal
exit /b


tobornforlife@vk 24-02-2014 16:11 2314882

Файл не найден
Файл не найден

Georgio 24-02-2014 17:07 2314905

Я немного подредактровал код, но думаю, что проблема в другом: либо пакетный файл находится не в одной директории с папкой "shots", либо эта папка называется по-другому, либо эта папка скрытая и (или) системная.


Время: 16:52.

Время: 16:52.
© OSzone.net 2001-