0

Java からバッチ ファイルを呼び出すだけではなく、コードを Java にしたいのです。

私はこれまでのところこれを持っていますが、私のバッチファイルには多くのコードがあり、それを受け入れません.

public static void main(String[] args) { 
    final String dosCommand = "cmd /c dir /s";
    final String location = "C:\\WINDOWS";
    try {
      final Process process = Runtime.getRuntime().exec(dosCommand + " " + location);
      final InputStream in = process.getInputStream();
      int ch;
      while((ch = in.read()) != -1) {
        System.out.print((char)ch);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
}

Java クラスに追加するバッチ コードのサンプル。誰かが私に必要だと言わない限り、私は自分のクラスに @echo off を追加していません。

@echo off

rundll32 wbemupgd, UpgradeRepository

NET USE Q: \\Somenetworkpath\ /PERSISTENT:NO
Q:
CD \DeskTop\Troubleshoot\
COPY subinacl.msi "C:\Documents and Settings\%USERNAME%\Desktop"
C:
MSIEXEC.EXE /i "\Documents and Settings\%USERNAME%\Desktop\subinacl.msi" /qn

DEL /Q "C:\Documents and Settings\%USERNAME%\Desktop\subinacl.msi"

C:
CD \Program Files\Windows Resource Kits\Tools\
SUBINACL /SUBKEYREG HKEY_LOCAL_MACHINE /GRANT=Administrators=F
SUBINACL /SUBKEYREG HKEY_CURRENT_USER /GRANT=Administrators=F
SUBINACL /SUBKEYREG HKEY_CLASSES_ROOT /GRANT=Administrators=F
SUBINACL /SUBDIRECTORIES %SystemDrive% /GRANT=Administrators=F
SUBINACL /SUBKEYREG HKEY_LOCAL_MACHINE /GRANT=System=F
SUBINACL /SUBKEYREG HKEY_CURRENT_USER /GRANT=System=F
SUBINACL /SUBKEYREG HKEY_CLASSES_ROOT /GRANT=System=F
SUBINACL /SUBDIRECTORIES %SystemDrive% /GRANT=System=F
4

2 に答える 2

1

Java のバッチ コードで特殊文字を適切にエスケープしていないと思われます。

"としてエスケープされます\"

'としてエスケープされます\'

\としてエスケープされます\\

于 2012-08-08T03:10:48.480 に答える
0

私が望んでいたことは不可能のようです。バッチファイルを呼び出すだけで終わりました。

于 2012-08-23T19:15:08.440 に答える