Because by default, zkEnv.cmd will use the zoo.cfg as the default configuration file. And if you execute your command c:\opt\zookeeper\bin>zkServer.cmd, then only one instance start up with configuration zoo.cfg

So if you want to start up three instances:

either you copy three zookeeper package, and each has its own zoo.cfg, and execute following command for each c:\opt\zookeeper1\bin>zkServer.cmd, c:\opt\zookeeper2\bin>zkServer.cmd, c:\opt\zookeeper3\bin>zkServer.cmd

Or you can modify zkEnv.cmd, and make it accept the parameter as the configuration file, the you can execute zkServer.cmd ../conf/zoo.cfg, zkServer.cmd ../conf/zoo2.cfg, zkServer.cmd ../conf/zoo3.cfg

For alternative #2, you also need to update log4j configuration, so you can have different log file for each instances, so simply, just copy 3 folders, and modify each zoo.cfg