バットファイルを実行している自動テストを1つ作成しました。このabc.batは、アプリケーション・アセンブラ・プラグインを使用して生成されます。バットファイルの中で、クラスパスが設定され、Javaコマンドが実行されています)。 Linuxでは、それがうまく働いていますが、Windows環境で、私はエラーになっています:バットファイルの実行中に入力行が長すぎる
に入力ラインは、バッチファイルが実行されてからのパスが
C:\build\work\work1\abc\abc.bat
ある
長すぎます。私はこの道を守らなければならず、C:\build\abc.bat
のようにそれを減らすことはできません。
私はプロセスビルダーを使用してこの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();
}
パスwpには、C:\ build \ work \ work1のパスが含まれています。 (私はシステム環境変数からこのパスを取得しています)。パスのexeファイルが
abc.bat ABC \のパスが含まれている私はいくつかの研究を行い、以下に示すように長いパスの問題は、グループポリシーを変更することで固定できることを発見した:
は、Windowsキー、タイプをヒットgpedit.mscと入力してEnterキーを押します。
ローカルコンピュータポリシー>コンピュータの構成>管理用テンプレート>システム>ファイルシステム
に移動し、win32の長いパスを有効にします。
これは私にとっては役に立ちません。私はWindows 10のエンタープライズを使用しています、OSのビルドは14393.1593です。
もう1つの方法はSubstコマンドを使用することです。手動でコマンドプロンプトを使用してドライブをマップすることができます。
C:\build> Subst X: “C:\build\work\work1”
X:\>abc\abc.bat
「入力行が長すぎます」という問題はありません。これはこの問題を克服する良い方法ですか?プロセスビルダーを使用してこれを自動化する方法は?