MacBain Skrevet 13. juli 2008 Del Skrevet 13. juli 2008 Trenger hjelp til å lage en batch fil som erstatter filer over en hvis størrelse. Altså hvis fil.a i c:\ ikke eksistrer eller er over/under en hvis størrelse så skal C:\Backup\fil.a erstatte denne. Noen som kan hjelpe meg? Har laget følgende så langt @ECHO OFF :STRT if not exist C:\fil.a Copy C:\Backup\fil.a C:\fil.a GOTO STRT Lenke til kommentar
trtrtr Skrevet 23. juli 2008 Del Skrevet 23. juli 2008 Her har du et forslag - har lagt på litt kommentarer. Viser bruk av "subrutiner" i batch filer, ugh. Selve sjekk på filstørrelse skjer ved hjelp av %~z1. Da hentes filstørrelsen til fil i %1. Se call /? for mer info om hva annet %1 (%2, %3...) kan konverteres til. @ECHO off SET fileToCheck="c:\test\file1" SET fileToReplaceWith="c:\test\file2" SET maxSize=1000000 REM Calls batch subroutine with parameters, which ends up as %1, %2, %3 inside the sub call :ReplaceFileIfMissingOrTooSmall %fileToCheck% %fileToReplaceWith% %maxSize% GOTO :END :ReplaceFileIfMissingOrTooSmall IF not EXIST %1 ( ECHO "file (%1) does not exist.." call :DoReplaceFile %1 %2 GOTO :CheckDone ) IF %~z1 GTR %3 ( ECHO "file is %~z1 bytes big..Bigger than maxsize (%3)..replacing"; call :DoReplaceFile %1 %2 GOTO :CheckDone ) :CheckDone REM heh, we have to "GOTO" eof label to return from sub..ah well.. GOTO :EOF :EOF REM Replaces (copies) file %2 with file %1 :DoReplaceFile ECHO "replacing file (%1) with (%2)" COPY %2 %1 GOTO :EOF :EOF :END Lenke til kommentar
MacBain Skrevet 26. juli 2008 Forfatter Del Skrevet 26. juli 2008 (endret) Takker for hjelpen, men lurer på en liten ting til? Hvordan velger jeg at filen skal være på en minimum størrelse og ikke en maksimum størrelse? Altså hvis file1 er under en byte så skal den erstattes med file2. Takker for hjelpen nok en gang, er ingen kløpper på programmering som du skjønner . PS. Fikk det til nå (koden skal også loope), og ser ut som koden under virker bra: @ECHO OFF :STRT SET fileToCheck="c:\test\file1" SET fileToReplaceWith="c:\test\file2" SET minSize=1 REM Calls batch subroutine with parameters, which ends up as %1, %2, %3 inside the sub call :ReplaceFileIfMissingOrTooSmall %fileToCheck% %fileToReplaceWith% %minSize% GOTO :END :ReplaceFileIfMissingOrTooSmall IF not EXIST %1 ( ECHO "file (%1) does not exist.." call :DoReplaceFile %1 %2 GOTO :CheckDone ) IF %~z1 LSS %3 ( ECHO "file is %~z1 bytes big..Smaller then minsize (%3)..replacing"; call :DoReplaceFile %1 %2 GOTO :CheckDone ) :CheckDone REM heh, we have to "GOTO" eof label to return from sub..ah well.. GOTO :EOF :EOF REM Replaces (copies) file %2 with file %1 :DoReplaceFile ECHO "replacing file (%1) with (%2)" COPY %2 %1 GOTO :EOF :EOF :END GOTO STRT Endret 26. juli 2008 av MacBain Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå