Войти

Показать полную графическую версию : Перемещение и переименовывание файла


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

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

gora
27-07-2010, 12:21
@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
gora спасибо большое.

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

gora
27-07-2010, 14:18
@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
А можно аналогично мне подсказать?

Имеются 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
в августе будет 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
октябрь - a
ноябрь - b
декабрь - c »
поправил с учетом уточнения (хотя он и до этого работал)

Borg
28-07-2010, 07:38
А в декабре 12?

октябрь - a
ноябрь - b
декабрь - c

41275jur
19-06-2013, 01:33
Доброе время суток.
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 файлов. Как написать что бы можно было переименовать все файлы?




© OSzone.net 2001-2012