JJFすでに正しい答えが書かれています。バッチファイルをRAMにコピーし、Windowsコマンドインタープリタにメモリ内のコマンドラインを解釈するように通知することはできません。 RAMディスクを作成し、バッチファイルをRAMディスクにコピーし、そこから実行することは可能です。しかし、これは仕事を必要以上に複雑にするだけです。
このコメント付きバッチコードは、バッチファイルをディレクトリにコピーして別のWindowsコマンドプロセスで処理する方法を示しています。
@echo off
rem Is the batch file path not the path of directory for temporary files?
if /I not "%~dp0" == "%TEMP%\" (
rem Copy the batch file to directory for temporary files.
copy "%~f0" "%TEMP%" >nul
rem Run the copy in a separate command process with name of the batch
rem file with extension as window title and exit this batch process.
start "%~nx0" "%TEMP%\%~nx0"
goto :EOF
)
echo The batch file is now running from directory for temporary files.
echo.
pause
rem Delete the batch file in directory for temporary files
rem and exit the command process started for this batch file.
del "%TEMP%\%~nx0" & exit
バッチコードで2つのecho
コマンドとpause
コマンドを交換してください。
使用されているコマンドとその動作方法を理解するには、コマンドプロンプトウィンドウを開き、次のコマンドを実行して、コマンドごとに表示されているすべてのヘルプページをすべてよく読んでください。
call /?
...%~dp0
(ドライブとバッチファイルそのものである引数0のパス)と%~nx0
(名前とバッチファイルの拡張子)
copy /?
del /?
echo /?
exit /?
goto /?
if /?
を説明します
pause /?
rem /?
start /?
も参照バッチなどのエラーメッセージを表示して開かれたコンソールウィンドウを避けるために2つの
del
と
exit
は1行から読み取るの2つのコマンドを実行し、ここで使用オペレータ
&
の説明については
Single line with multiple commands using Windows batch fileに答える
ファイルを処理中にWindowsコマンドインタープリタで予期せず削除されました。
で終了しますが、これを回避しようとしましたが、それが必要な場合は実行しますが、Windowsエクスプローラからファイルを実行している私がディスマウントするとプロセスとすべての子プロセスが強制終了されます(cmdからは発生しません)ので、TEMPから実行されたファイルを持っていてもスクリプトは完了しません。 –