Показать полную графическую версию : [решено] Проверка размера файла
Уважаемые знатоки!
Помогите написать батник по следующим условиям:
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
Если я правильно логику понял:
@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
)
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
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
SendMessage,
Спасибо!!!
А можно коментарии к строкам? :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.