diff --git a/util/embed_test_data.go b/util/embed_test_data.go
index 5376fdd..a0efdc4 100644
--- a/util/embed_test_data.go
+++ b/util/embed_test_data.go
@@ -18,11 +18,15 @@
 
 import (
 	"bytes"
+	"flag"
 	"fmt"
 	"io/ioutil"
 	"os"
+	"strings"
 )
 
+var fileList = flag.String("file-list", "", "if not empty, the path to a file containing a newline-separated list of files, to work around Windows command-line limits")
+
 func quote(in []byte) string {
 	var buf bytes.Buffer
 	buf.WriteByte('"')
@@ -60,6 +64,20 @@
 }
 
 func main() {
+	flag.Parse()
+
+	var files []string
+	if len(*fileList) != 0 {
+		data, err := ioutil.ReadFile(*fileList)
+		if err != nil {
+			fmt.Fprintf(os.Stderr, "Error reading %s: %s.\n", *fileList, err)
+			os.Exit(1)
+		}
+		files = strings.FieldsFunc(string(data), func(r rune) bool { return r == '\r' || r == '\n' })
+	}
+
+	files = append(files, flag.Args()...)
+
 	fmt.Printf(`/* Copyright (c) 2017, Google Inc.
  *
  * Permission to use, copy, modify, and/or distribute this software for any
@@ -77,7 +95,7 @@
 /* This file is generated by:
 `)
 	fmt.Printf(" *   go run util/embed_test_data.go")
-	for _, arg := range os.Args[1:] {
+	for _, arg := range files {
 		fmt.Printf(" \\\n *       %s", arg)
 	}
 	fmt.Printf(" */\n")
@@ -99,7 +117,7 @@
 	// literal, but this is less compact.
 	const chunkSize = 8192
 
-	for i, arg := range os.Args[1:] {
+	for i, arg := range files {
 		data, err := ioutil.ReadFile(arg)
 		if err != nil {
 			fmt.Fprintf(os.Stderr, "Error reading %s: %s.\n", arg, err)
@@ -133,7 +151,7 @@
 
 std::string GetTestData(const char *path) {
 `, chunkSize, chunkSize, chunkSize)
-	for i, arg := range os.Args[1:] {
+	for i, arg := range files {
 		fmt.Printf("  if (strcmp(path, %s) == 0) {\n", quote([]byte(arg)))
 		fmt.Printf("    return AssembleString(kData%d, kLen%d);\n", i, i)
 		fmt.Printf("  }\n")
