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

4zz 18-08-2011 00:04 1734189

Проверка размера файла
 
Уважаемые знатоки!
Помогите написать батник по следующим условиям:

1.В папке по адресу C:\Doc\ найти файл «Fora.vek», определить его размер, если он составляет 95800 байт, то переименовать его в «2Fora.vek», а файл «1Fora.vek» из этой же папки переименовать в «Fora.vek», если же его размер 805132 байта, то запускаем программу «Zorro.exe» из этой же директории.

2.Через 50 секунд переименовать файл «Fora.vek» в «1Fora.vek», а файл «2Fora.vek» в «Fora.vek».

3.После завершения программы «Zorro.exe» переименовать файл «Fora.vek» в «2Fora.vek», а файл «1Fora.vek» в «Fora.vek».

Запутано, конечно.. :)

SendMessage 18-08-2011 01:51 1734235

Если я правильно логику понял:
Код:

@echo off

set "d=C:\Doc\"
set "f=Fora.vek"
set "f1=1Fora.vek"
set "app=Zorro.exe"

pushd "%d%" & call:size "%f%"

:size
if %~z1 equ 95800 (
  ren %1 "2%~1"
  ren "%f1%" %1
  ping -n 51 127.0.0.1>nul
  ren %1 "%f1%"
  ren "2%~1" %1
  exit
) else (
  if %~z1 equ 805132 (start /wait "" %app% & ren %1 "2%~1" & ren "%f1%" %1)
  exit
)


4zz 18-08-2011 08:48 1734307

SendMessage,
Спасибо огромное, все получается, а возможно ли такое уточнение:

1.В папке по адресу C:\Doc\ найти файл «Fora.vek», определить его размер, если он составляет 95800 байт, то переименовать его в «2Fora.vek», а файл «1Fora.vek» из этой же папки переименовать в «Fora.vek», после чего запустить программу «Zorro.exe»
2.Через 50 секунд переименовать файл «Fora.vek» в «1Fora.vek», а файл «2Fora.vek» в «Fora.vek».
3.После завершения программы «Zorro.exe» переименовать файл «Fora.vek» в «2Fora.vek», а файл «1Fora.vek» в «Fora.vek».
4.Если же его размер 805132 байта, то запускаем программу «Zorro.exe» из этой же директории.
5.Через 50 секунд переименовать файл «Fora.vek» в «1Fora.vek», а файл «2Fora.vek» в «Fora.vek».
6.После завершения программы «Zorro.exe» переименовать файл «Fora.vek» в «2Fora.vek», а файл «1Fora.vek» в «Fora.vek».

Здесь наверное сложности с 3 и 6 пунктами.. :)

SendMessage 18-08-2011 15:14 1734554

4zz, сложность не столько с 3 и 6 пунктами, сколько с круговертью файлов. :)
Попробуйте так:
Код:

@echo off

set "d=C:\Doc\"
set "f=Fora.vek"
set "f1=1Fora.vek"
set "f2=2Fora.vek"
set "app=Zorro.exe"
set n=0

pushd "%d%" & call:size "%f%"

:size
if %~z1 equ 95800 (
  (copy %1 "%f2%" /y & copy "%f1%" %1 /y & del "%f1%")>nul
  start "" "%app%"
  goto loop
) else (
  if %~z1 equ 805132 (
      start "" "%app%"
      goto loop
  )
)

exit

:loop
  (
  ping -n 2 127.0.0.1 & set /a n+=1 
  if %n% equ 50 (copy %1 "%f1%" /y & copy "%f2%" %1 /y & del "%f2%")
  tasklist | find /i "%app%" || (copy %1 "%f2%" /y & copy "%f1%" %1 /y & del "%f1%" & exit)
  )>nul
goto loop


4zz 18-08-2011 17:38 1734685

SendMessage,
Спасибо!!!

А можно коментарии к строкам? :)


Время: 18:17.

Время: 18:17.
© OSzone.net 2001-