2017-08-25 4 views
0

J'ai créé un test automatisé qui exécute un fichier chauve-souris. Ce fichier abc.bat est généré à l'aide du plug-in assembleur d'applications. Dans le fichier bat, le chemin de classe a été défini et les commandes Java ont été exécutées). Sous Linux, il fonctionne très bien, mais dans l'environnement Windows, je reçois l'erreur:Problème de ligne d'entrée trop long pendant l'exécution du fichier bat

La ligne d'entrée est trop long

Le chemin à partir duquel fichier de commandes est en cours d'exécution est C:\build\work\work1\abc\abc.bat. Je dois garder ce chemin, je ne peux pas le réduire à C:\build\abc.bat. J'utilise process builder pour exécuter ce fichier abc.bat.

public Test(Path wp, Path exe) throws IOException { 
builder = new ProcessBuilder() 
     .directory(wp.toFile()) 
     .command(wp.resolve(exe).toAbsolutePath().toString()) 
     .redirectOutput(Redirect.INHERIT) 
     .redirectError(Redirect.INHERIT); 

     builder.start(); 
} 

Chemin wp contient le chemin de C: \ build \ work \ travail1. (Je récupère ce chemin à partir de variables d'environnement système). Chemin exe contient le chemin d'abc \ abc.bat

Je l'ai fait quelques recherches et découvert que problème de long chemin peut être corrigé en modifiant la politique du groupe comme indiqué ci-dessous:

Appuyez sur la touche Windows, saisissez gpedit.msc et appuyez sur Entrée.
Accédez à Stratégies de l'ordinateur local> Configuration de l'ordinateur> Modèles d'administration> Système> Système de fichiers
et activez les chemins longs win32.

Cela ne fonctionne pas pour moi. J'utilise Windows 10 entreprise, la construction OS est 14393.1593.

Une autre méthode consiste à utiliser la commande Subst. Manuellement Je mapper le lecteur en utilisant comme invite de commande:

C:\build> Subst X: “C:\build\work\work1” 
X:\>abc\abc.bat 

Il fonctionne très bien et il n'y a pas de problème de « La ligne d'entrée est trop long ». Est-ce un bon moyen de surmonter ce problème? et comment automatiser cela en utilisant le constructeur de processus?

Répondre

1

Selon les documents de Microsoft "Maximum Path Length Limitation" ce chemin n'est pas assez long pour atteindre la limite de Windows. "La ligne d'entrée est trop longue" doit inclure d'autres caractères, éventuellement des paramètres transmis au fichier chauve-souris ou des paramètres utilisés pour appeler ce fichier chauve-souris.

Pour obtenir une meilleure image de ce qui est en cours d'exécution, activez l'audit de processus en ligne de commande dans Windows. Si vous atteignez cette limite et que vous passez d'un paramètre à l'autre, je vous suggère de trouver un moyen différent d'accéder à cette information, éventuellement en enregistrant et en lisant un fichier.