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?