Looping through a batch file only if the response is "everything is okay"

Posted by PeanutsMonkey on Super User See other posts from Super User or by PeanutsMonkey
Published on 2012-08-30T03:12:09Z Indexed on 2012/08/30 3:40 UTC
Read the original article Hit count: 424

Filed under:
|

I have a batch file that loops through the contents of a directory and compresses the files in the directory as follows;

for %%a in (c:\data\*.*) do if "%%~xa" == "" "C:\Program Files\7-Zip\7za.exe" a -tzip -mx9 "%%a.zip" "%%a"

Seeing that I am using 7zip to compress the file, it returns the message "everything is okay" if it has successfully compressed the file and it then moves onto the next file in any.

What I would like to do is the following;

  1. Only move to the next file if the response is "everything is okay"
  2. If the response is anything but "everything is okay", the error is logged
  3. Since an error has occurred, it attempts to compress the file again
  4. Once when it has succeeded i.e. "everything is okay" it goes to the next file
  5. Steps 3 & 4 only occur a maximum of 3 times before it gives up and moves onto the next file.

How can I achieve this?

© Super User or respective owner

Related posts about Windows

Related posts about batch