0

以前の質問のコメントで、Java コードをバッチ ファイルに追加できないと聞きました。

しかし、それに代わるものはありますか?
Javaコードをバッチファイルに追加することは可能ですか?

バッチファイルで次のことを試しましたが、機能しません。

vol231.exe -f m.walkin(新しいファイル(d.detectDrive())) imageinfo > Volatility.txt

これは、Java からコマンド プロンプトで実行するために作成した cmdenv.bat です。

E:
echo off
cls

... //This part is a long part for reducing footprint whereby the command prompt is switched to Helix

vol231.exe -f E:\KOHMOHOJOJO-PC-20140714-152414.raw imageinfo > Volatility.txt
vol231.exe -f E:\KOHMOHOJOJO-PC-20140714-152414.raw --profile=Win7SP0x86 pslist >> Volatility.txt
pause
exit

これにより、volatility コマンドを同封のコマンド プロンプト (Helix) で実行できるようになり、フットプリントが削減されます。

ただし、揮発性コマンドはすべてハードコーディングされています。E:\KOHMOHOJOJO-PC-20140714-152414.rawとは--profile=Win7SP0x86異なります。バッチファイルではJavaコーディングが許可されているため、それを行う代替手段はありますか?

私はJavaとバッチファイルが初めてです。

編集1: ここに画像の説明を入力 ここに画像の説明を入力

java_path を変更しようとしましたが、まだエラーがあります。

Edit2:次のようなさまざまなパスを試しました:

  1. C:\Program Files\Java\jdk1.8.0_05\binそしてC:\Program Files\Java\jre8\bin 私は得るError: Could not find or load main class TestRun1

  2. C:\Users\User\workspace\Volatility\binそしてC:\Users\User\workspace\Volatility\src(これはクラスが保存されるワークスペースです)C:\Users\User\workspace\Volatility\(bin or src)\java内部または外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません。そこで、ファイルに java.exe を追加しました。エラーは に戻りError: Could not find or load main class TestRun1ます。

このバッチ ファイルは Java を読み取れないようです。 の.前に を追加しようとしましたTestRun1が、それでも同じエラーが発生します。Control Panel\System and Security\System\Advance System Settings\Environment Variablesまた、 (Path)の下に環境変数があることもわかりました。削除C:\Program Files\Java\jdk1.8.0_05\binしてから実行しようとしましたが、それでも同じエラーが発生します。

4

3 に答える 3

0

Javaコードをバッチファイルに追加することは可能ですか?

いいえ、バッチ ファイルに Java コードを追加することはできません。

別の回避策:

バッチ ファイルで Java 値を使用するには、値を Java で出力し、その値をバッチ ファイルで使用します。

ジャワでは、

public class TestRun1
{
    public static void main(String args[])
    {
       System.out.println(m.walkin(new File(d.detectDrive())));
    }
}

バッチ ファイル内:

set tmp_file=%TEMP%\%~n0.tmp

rem ----set as per your java directory-------
set java_path=C:\Program Files\Java\jdk1.6.0_43\bin

"%java_path%\java" TestRun1> "%tmp_file%"
set /P p=<"%tmp_file%"
echo %p%

rem -----now p has the value, use it in the command--------

vol231.exe -f %p% imageinfo > Volatility.txt
vol231.exe -f %p% --profile=Win7SP0x86 pslist >> Volatility.txt
vol231.exe -f %p% --profile=Win7SP0x86 dlllist > Volatility.txt
vol231.exe -f %p% --profile=Win7SP0x86 iehistory >> Volatility.txt
vol231.exe -f %p% --profile=Win7SP0x86 svcscan >> Volatility.txt
vol231.exe -f %p% --profile=Win7SP0x86 hivelist >> Volatility.txt
vol231.exe -f %p% --profile=Win7SP0x86 filescan >> Volatility.txt
vol231.exe -f %p% --profile=Win7SP0x86 netscan >> Volatility.txt
pause
del /F "%tmp_file%" 
于 2014-07-15T07:26:08.307 に答える
0

Java プログラムで、ファイル名をコマンドライン オプションとしてバッチ ファイルに渡すようにします。バッチ ファイル内では、変数としてアクセスできます%1。複数のコマンドライン オプションを渡すことができます。%2その他は、などとして利用できます%3

于 2014-07-15T07:19:05.873 に答える
0

ここでは、Java コードをバッチ ファイルに追加する方法を示します (ただし、問題の完全な解決策ではありません)。

 @Deprecated /* >nul 2>&1

:: self compiled java/.bat hybrid
::
:: deprecated is the only one annotation that can be used outside the class definition
:: and is needed for 'mute' start of multi-line java comment
:: that will be not printed by the batch file.
:: though it still created two files - the .class and the .java
:: it still allows you to embed both batch and java code into one file

@echo off
setlocal
java -version >nul 2>&1 || (
    echo java not found
    exit /b 1
)

::find class name
for /f "usebackq tokens=3 delims=} " %%c in (`type %~f0 ^|find /i "public class"^|findstr /v "for /f"`) do (
    set "javaFile=%%c"
    goto :skip
)
:skip

copy "%~f0" "%javaFile%.java" >nul 2>&1

javac "%javaFile%.java" 
java "%javaFile%"

::optional
::del %javaFile%.* >nul 2>&1 
end local
exit /b 0

*******/



public class TestClass
{
    public static void main(String args[])
    {
       System.out.println("selfcompiled .bat/.java hybrid");
    }
}

非推奨の注釈は、クラス外で設定できる唯一の注釈です。有毒な出力を避けるために注釈が必要です。また、削除できる2つの一時ファイル(.classと.java)も作成されます。

于 2014-07-15T08:09:28.437 に答える