Компьютерный форум 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=181532)

sanat 27-07-2010 11:52 1461380

Перемещение и переименовывание файла
 
Имеется файл допустим на диске C:\1234cv01.rar его нужно переместить в c:\arhiv\ с именем 1234rn??.rar (под знакоми вопроса имеется ввиду следующий порядковый свободный двухзначный номер), т.к. в данной папке уже имеются файлы 1234rn??.rar

Моих знаний CMD и VBS не хватает для этого, подскажите пожалуйста можно ли сделать такое батником (им предпочтительней) ?

gora 27-07-2010 12:21 1461392

Код:

@Echo Off
SetLocal enabledelayedexpansion
Set src=C:\1234cv01.rar
Set out=c:\arhiv

For /L %%i In (0,1,99) Do (
        Set nb=0%%i
        Set nb=!nb:~-2!
        If Not Exist "%out%\1234rn!nb!.rar" (Move "%src%" "%out%\1234rn!nb!.rar" & Exit)
)


sanat 27-07-2010 13:40 1461435

gora спасибо большое.

А если нужно переместить не один файл , а сразу несколько 1234cv??.rar , в эту папку переименовав в каждый по очереди ?

gora 27-07-2010 14:18 1461468

Код:

@Echo Off
SetLocal enabledelayedexpansion
Set src=C:\1234cv??.rar
Set out=C:\arhiv

For %%a In ("%src%") Do Call :_mov "%%a"
Exit

:_mov
For /L %%i In (0,1,99) Do (
        Set nb=0%%i
        Set nb=!nb:~-2!
        If Not Exist "%out%\1234rn!nb!.rar" (Move "%~1" "%out%\1234rn!nb!.rar" & GoTo :EOF)
)
GoTo :EOF


Borg 27-07-2010 15:45 1461540

А можно аналогично мне подсказать?

Имеются 6 папок у меня:
of, og, or, on, oz, ov
В каждую папку скидываются однотипные файлы вида defs????.ft?, причем в любой папке может быть произвольное количество файлов.

И есть седьмая папка Sbor, куда я должен из каждой папки закинуть(переместить) файлы со всех предыдущих 6 папок.

Причем из каждой папки я должен назвать файл вида defs"имя папки"??.ft? Тоесть файлы из папки of будут называться defsof??.ft?

И конечно последние два символа как и в вашем примере должны генерироваться от 00 до 99 сами. А ft? каждый месяц меняется в июле он выгружается с 7 на конце в августе будет 8 и т.д., поэтому его жестко прописывать в бат файле не надо.

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

gora 27-07-2010 18:48 1461668

Цитата:

Цитата Borg
в августе будет 8 »

А в декабре 12?
Код:

@Echo Off
SetLocal enabledelayedexpansion
Set src=of og or on oz ov
Set out=Sbor
Set msc=defs????.ft?

For %%f In (%src%) Do (
        Set tf=%%f
        For %%a In ("%%f\%msc%") Do Call :_mov "%%~nxa"
)
Exit

:_mov
For /L %%i In (0,1,99) Do (
        Set nb=0%%i
        Set nb=!nb:~-2!
        If Not Exist "%out%\defs!tf!!nb!%~x1" (Move "!tf!\%~1" "%out%\defs!tf!!nb!%~x1" & GoTo :EOF)
)
GoTo :EOF

Цитата:

Цитата Borg
октябрь - a
ноябрь - b
декабрь - c »

поправил с учетом уточнения (хотя он и до этого работал)

Borg 28-07-2010 07:38 1461942

Цитата:

А в декабре 12?
октябрь - a
ноябрь - b
декабрь - c

41275jur 19-06-2013 01:33 2170422

Доброе время суток.
gora,
Цитата:

cho Off
SetLocal enabledelayedexpansion
Set src=C:\1234cv??.rar
Set out=C:\arhiv

For %%a In ("%src%") Do Call :_mov "%%a"
Exit

:_mov
For /L %%i In (0,1,99) Do (
Set nb=0%%i
Set nb=!nb:~-2!
If Not Exist "%out%\1234rn!nb!.rar" (Move "%~1" "%out%\1234rn!nb!.rar" & GoTo :EOF)
)
GoTo :EOF
В этом скрипте переименовывает только 100 файлов. Как написать что бы можно было переименовать все файлы?


Время: 22:59.

Время: 22:59.
© OSzone.net 2001-