PDA

Показать полную графическую версию : [решено] перемещение файлов , последних по имени


Alexander_88
20-08-2014, 23:30
Здравствуйте.
Можно ли переместить количество файлов, которое я укажу, из одного каталога в другой, начиная с последнего?
т.е. если к примеру я указал количество 2, а в каталоге файлы 0001.news 0002.news 0003.news 0004.news 0005.news 0006.news, чтобы переместились файлы 0006.news и 0005.news :sorry:

Georgio
21-08-2014, 00:28
Alexander_88, здравствуйте. Вот код:


@echo off

set number=2
set index_format=4
set "extension=.news"
set "in=D:\Test 1"
set "out=D:\Test 2"

for /f %%i in ('
set /a index_format-1
') do (
for /l %%j in (1 1 %%i) do (
call set zeros=0%%zeros%%
)
)
for /f "delims=" %%i in ('
dir /a-d/b/o-n "%in%\*%extension%"
') do (
for /f "tokens=* delims=0" %%j in ("%%~ni") do (
for /f %%k in ('
set /a %%j-%number%+1
') do (
for /l %%l in (%%j -1 %%k) do (
set $index=%zeros%%%l
call move "%in%\%%$index:~-%index_format%%%%extension%" "%out%">nul
)
)
)
exit /b
)

.

Alexander_88
21-08-2014, 01:07
где- то я походу ошибку допустил, не хочет перемещать
@echo off

set number=2
set index_format=4
set "extension=.news"
set "in=C:\work\new\"
set "out=C:\work\new\1"

for /f %%i in ('
set /a index_format-1
') do (
for /l %%j in (1 1 3) do (
call set zeros=0%%zeros%%
)
)
for /f "delims=" %%i in ('
dir /a-d/b/o-n "%in%\*%extension%"
') do (
for /f "tokens=* delims=0" %%j in ("%%~ni") do (
for /f %%k in ('
set /a %%j-%number%+1
') do (
for /l %%l in (%%j -1 %%k) do (
set $index=%zeros%%%l
call move "%in%\%%$index:~-%index_format%%%%extension%" "%out%">nul
)
)
)
exit /b
)

Alexander_88
21-08-2014, 07:00
понял в чем дело, просто название файлов числа + буквы, к примеру 0001start, 0003finish

Georgio
21-08-2014, 07:36
Alexander_88, предлагаю изменить условие задания в теме, взаимно удалить ответы и начать "с нуля" с новой, корректно поставленной, задачи, и тогда я или кто-нибудь ещё её Вам решат.

Georgio
21-08-2014, 13:39
Alexander_88, вот код для сложного случая, когда в одной папке находятся файлы с различными "корневыми именами" (или без таковых) и с различными форматами индекса в качестве префикса:



@echo off

set number=2
set "const=root.exp"
set index_format=4
set "in=D:\Test 1"
set "out=D:\Test 2"

for /l %%i in (1 1 %index_format%) do (
call set reg_exp=[0-9]%%reg_exp%%
)
for /f "delims=" %%i in ('
dir /a-d/b/o-n "%in%\*%const%"^| findstr /r "^%reg_exp%"
') do (
set /a count+=1
for /f %%j in ('
set /a count
') do (
if %%j leq %number% (
move "%in%\%%i" "%out%">nul
) else (
exit /b
)
)
)



.




© OSzone.net 2001-2012