Показать полную графическую версию : Перемещение и переименовывание файла
Имеется файл допустим на диске C:\1234cv01.rar его нужно переместить в c:\arhiv\ с именем 1234rn??.rar (под знакоми вопроса имеется ввиду следующий порядковый свободный двухзначный номер), т.к. в данной папке уже имеются файлы 1234rn??.rar
Моих знаний CMD и VBS не хватает для этого, подскажите пожалуйста можно ли сделать такое батником (им предпочтительней) ?
@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)
)
gora спасибо большое.
А если нужно переместить не один файл , а сразу несколько 1234cv??.rar , в эту папку переименовав в каждый по очереди ?
@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
А можно аналогично мне подсказать?
Имеются 6 папок у меня:
of, og, or, on, oz, ov
В каждую папку скидываются однотипные файлы вида defs????.ft?, причем в любой папке может быть произвольное количество файлов.
И есть седьмая папка Sbor, куда я должен из каждой папки закинуть(переместить) файлы со всех предыдущих 6 папок.
Причем из каждой папки я должен назвать файл вида defs"имя папки"??.ft? Тоесть файлы из папки of будут называться defsof??.ft?
И конечно последние два символа как и в вашем примере должны генерироваться от 00 до 99 сами. А ft? каждый месяц меняется в июле он выгружается с 7 на конце в августе будет 8 и т.д., поэтому его жестко прописывать в бат файле не надо.
Помогите пожалуйста автоматизировать, а то работа очень трудоемкая и отнимает много времени.
в августе будет 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 »
поправил с учетом уточнения (хотя он и до этого работал)
А в декабре 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.