Hi Eric,
Yes, this problem comes about because of differences in how Linux/MacOS and Windows do command line parsing (of which I was previously unaware). The following syntax (though not pretty) should work around the problem on Windows:
gsutil setmeta """Cache-Control:public, max-age=3600""" gs://bucket/object
More generally, you need two sets of double quotes around each header/value pair, and one set of double quotes around the entire expression. For example, to set two headers you would do:
gsutil setmeta """Cache-Control:public, max-age=3600"",""Content-Type:text/html""" gs://bucket/object
Please give it a try and let me know if it works for you on Windows. I'll update the built-in documentation.
Thanks,
Mike