VirtualBoxをフリーズするアクセスできないVirtualBoxマシンに問題があり、Windowsタスクマネージャを使用してリセットする必要があります。これらのVirtualBoxインスタンスは既に.batファイルによって起動されているため、起動する前にアクセスできないマシン(のみ)の登録を解除するために、.batにコードを追加したいと考えました。ディスクにファイルを書き込むのではなく、varを使ってファイルを書き込もうとしています。私は現在アクセスできないマシンをエコーします、次のコードを持っている:アクセスできないVirtualBoxの登録を解除するバッチファイル
ECHO OFF
SET LOCAL ENABLEDELAYEDEXPANSION
SET var=%%F
FOR /F "tokens=* USEBACKQ" %%F IN (`"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" list vms`) DO (
ECHO.%var% | FIND /I "inaccessible">Nul && (ECHO %var%)
)
は、私は、これはループ内検索を使用するための正しい方法であるようにわからないんだけど、いずれのケースでは私が達成したいものをアクセス不可能なマシンを見つけた後、それを登録解除するために、そのUUIDを使用するようにされています。一緒にこのパズルの2つの部分を取得し、作業
SET SUBSTRING=%UUID:~18,-1%
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" unregistervm %SUBSTRING% > nul)
ヘルプははるかに高く評価します。
サイドノート: 'SETLOCAL'は1語です。 – soja
これは非常にうまくいった。ありがとうございました。 – user2565422