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

Alexander_88 20-08-2014 23:30 2392026

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

Georgio 21-08-2014 00:28 2392044

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 2392058

где- то я походу ошибку допустил, не хочет перемещать
Код:

@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 2392085

понял в чем дело, просто название файлов числа + буквы, к примеру 0001start, 0003finish

Georgio 21-08-2014 07:36 2392089

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

Georgio 21-08-2014 13:39 2392237

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
  )
  )
 )



.


Время: 16:35.

Время: 16:35.
© OSzone.net 2001-