CMD/BAT - Перемещение и переименовывание файла

Ответить
Аватара пользователя
sanat

CMD/BAT - Перемещение и переименовывание файла

Сообщение sanat »

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



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

Re: CMD/BAT - Перемещение и переименовывание файла

Сообщение gora »

Код:

Код: Выделить всё

@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

Re: CMD/BAT - Перемещение и переименовывание файла

Сообщение sanat »

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



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

Re: CMD/BAT - Перемещение и переименовывание файла

Сообщение gora »

Код:

Код: Выделить всё

@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

Re: CMD/BAT - Перемещение и переименовывание файла

Сообщение Borg »

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



Имеются 6 папок у меня:

of, og, or, on, oz, ov

В каждую папку скидываются однотипные файлы вида defs????.ft?, причем в любой папке может быть произвольное количество файлов.



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



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



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



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

Re: CMD/BAT - Перемещение и переименовывание файла

Сообщение gora »

Цитата Borg:



в августе будет 8
CMD/BAT - Перемещение и переименовывание файла




А в декабре 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
CMD/BAT - Перемещение и переименовывание файла




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

Re: CMD/BAT - Перемещение и переименовывание файла

Сообщение Borg »

Цитата:



А в декабре 12?



октябрь - a

ноябрь - b

декабрь - c
Аватара пользователя
Borg

Re: CMD/BAT - Перемещение и переименовывание файла

Сообщение Borg »

Доброе время суток.

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 файлов. Как написать что бы можно было переименовать все файлы?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»