Não vai copiar o código 50 vezes, alias o código que você postou não faz sentido, você manda a classe Runtime executar a variável nome e não o seu array de comando, sem contar que criou uma variável local pro mapa, deveria ser variável de instância.
Eu faria mais ou menos assim:
public class Exemplo {
public static void main(String[] args) {
PrintRunner printRunner = new PrintRunner();
printRunner.execute("prt001");
printRunner.execute("prt002");
printRunner.execute("prt003");
}
}
Aqui a classe que armazena 50 printers para executar:
import java.util.HashMap;
import java.util.Map;
public class PrintRunner {
private final Map<String, Printer> printers;
public PrintRunner() {
printers = new HashMap<>();
String servidor = "NOMESERVIDOR";
for (int i = 1; i <= 50; i++) {
String chave = String.format("prt%03d", i);
String nome = String.format("print-%03d", i);
printers.put(chave, new Printer(servidor, nome));
}
}
public void execute(String chave) {
Printer printer = printers.get(chave);
if (printer == null) {
throw new IllegalArgumentException("Nenhum comando encontrado para a chave \'" + chave + "\"");
}
printer.execute();
}
}
E aqui a classe que representa um printer e sabe como executar o Runtime.exec:
public class Printer {
private final String servidor;
private final String nome;
Printer(String servidor, String nome) {
this.servidor = servidor;
this.nome = nome;
}
public void execute() {
System.out.printf("Executando %s em %s%n", nome, servidor);
try {
String[] command = new String[] { "cmd.exe", "/c", "start", "\\\\" + servidor + "\\" + nome };
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(command);
process.waitFor();
System.out.printf("%s executado com sucesso em %s%n", nome, servidor);
} catch (Exception e) {
e.printStackTrace();
}
}
}