快速掛載和分離VHD文件的小腳本


 

  =======代碼開始========

  echo select vdisk file= %VHD文件路徑%

  echo attach vdisk

  exit

  分離VHD的腳本,只需要將上述代碼中 attach vdisk 命令改寫為 detach vdisk 即可。

 

舉個栗子:

@echo off
title 裝載卸載VHD
color 2f
mode con cols=60 lines=40

:menu1
echo ==========================
echo 選擇要進行的操作,按回車
echo ==========================
echo.
echo 1:裝載VHD
echo.
echo 2:卸載VHD
echo.

:choice
set choice=
set /p choice= 請選擇:
if not "%choice%"=="" SET Choice=%Choice:~0,1%
if %choice%==1 goto VHDon
if %choice%==2 goto VHDoff

echo 選擇無效,重新輸入!
echo.
goto choice

:VHDon
  echo select vdisk file= "E:\filevhd.vhd" >vhdsel(注意:路徑也可以用"%~dp0filevhd.vhd",這樣就要求BAT文件和VHD文件放在一起)
  echo attach vdisk>>vhdsel
  echo list disk>>vhdsel
  diskpart /s vhdsel
  del /f /q vhdsel
  exit

:VHDoff
  echo select vdisk file= "E:\filevhd.vhd" >vhdsel
  echo detach vdisk>>vhdsel
  echo list disk>>vhdsel
  diskpart /s vhdsel
  del /f /q vhdsel
  exit

 

======更方便的代碼==================

 

@echo off
color 3f
title 虛擬磁盤自動掛載與卸載
reg query HKU\S-1-5-20>nul 2>nul||echo 需要管理員權限運行!&&pause>Nul&&exit
rem 全自動掛載與卸載指定虛擬磁盤文件
rem 打開后自動檢測並執行,若已掛載,則卸載,若已經卸載,則掛載。
rem 請將虛擬磁盤文件的完整路徑寫在”filepath=“后面,支持帶空格路徑。
rem “autoopen=ON” 可在掛載后自動打開虛擬磁盤上的所有分區,“ON”改成其它值則不打開。


rem 設置
set filepath=C:\Users\ABC\VirtualBox VMs\7\asdfa.vhd
set autoopen=ON


if not exist "E:\filevhd.vhd" echo filepath設置錯誤,請檢查並重試!&&pause>nul&&exit
pushd %~dp0\

rem 檢測
echo select vdisk file="E:\filevhd.vhd">vdisktemp.txt
echo detail vdisk>>vdisktemp.txt
diskpart /s vdisktemp.txt|(findstr 找不到關聯的磁盤號 >nul 2>nul)&&goto :掛載||goto :卸載


:掛載
echo select vdisk file="E:\filevhd.vhd">vdisk-attach.txt
echo attach vdisk>>vdisk-attach.txt
echo detail disk>>vdisk-attach.txt
diskpart /s vdisk-attach.txt>vdisklog.txt
for /f "tokens=3" %%a in ('findstr 磁盤分區 vdisklog.txt') do (if /i "%autoopen%"=="ON" start %%a:)
goto :清理臨時文件

:卸載
echo select vdisk file="E:\filevhd.vhd">vdisk-detach.txt
echo detach vdisk>>vdisk-detach.txt
diskpart /s vdisk-detach.txt
goto :清理臨時文件

:清理臨時文件
del vdisk-attach.txt /f /q>nul 2>nul
del vdisk-detach.txt /f /q>nul 2>nul
del vdisktemp.txt /f /q>nul 2>nul
del vdisklog.txt /f /q>nul 2>nul
exit

 +++++++++++++++++++++++++++++++++++++++++自用+++++++++++++++++++++++++++++++++

使用BAT腳本掛載、卸載VHD文件

 

想開機自動掛載vhd文件,因為diskpart是一個單獨的程序,需要在它下面執行命令,所以直接通過bat或cmd是無法實現的,后來仔細看了diskpart的幫助

————————————————————————

Microsoft DiskPart 語法:

diskpart [/s <script>] [/?] ←這里

/s <script> - 使用一個 DiskPart 腳本。

/? - 顯示這個幫助屏幕。

————————————————————————

 

看到了吧,通過diskpart [/s <script>]這個命令可以執行基於diskpart的腳本文件,這樣我們的cmd文件就可以這樣寫:

diskpart /s c:\vhd.vbs

然后呢vhd.vbs中寫需要在diskpart下面執行的命令,內容為:

select vdisk file=c:\vhd.vhd

attach vdisk

最后呢,還要實現隱藏,這個還是需要用vbs腳本來實現,內容為:

Set ws = CreateObject("Wscript.Shell") 

ws.run "cmd /c c:\vhd.cmd",vbhide

 

具體代碼如下:

@echo off

  echo select vdisk file= %VHD文件路徑% >vhdsel

  echo attach vdisk>>vhdsel

  echo list disk>>vhdsel

  diskpart /s vhdsel

  del /f /q vhdsel

  exit

  分離VHD的腳本,只需要將上述代碼中 attach vdisk 命令改寫為 detach vdisk 即可。

 

或者更詳細一點:

 

@echo off

title 掛載卸載VHD

:start

cls

color 0a

MODE con: COLS=60 LINES=40

echo.

echo   ===============================

echo    請選擇要進行的操作,然后按回車

echo   ===============================

echo.

echo   0.掛載VHD

echo.

echo   1.卸載VHD

echo.

echo==================================

 

:choice

set choice=

set /p choice=     請選擇對應項目:

IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%

if /i "%choice%"=="0" goto loadVHD

if /i "%choice%"=="1" goto unloadVHD

 

:loadVHD

@echo off 

echo select vdisk file="E:\本機驅動\360file.vhd" >vhdsel 

echo attach vdisk>>vhdsel 

echo list disk>>vhdsel 

diskpart /s vhdsel 

del /f /q vhdsel 

exit

 

 

:unloadVHD

@echo off 

echo select vdisk file="E:\本機驅動\360file.vhd" >vhdsel 

echo detach vdisk>>vhdsel 

echo list disk>>vhdsel 

diskpart /s vhdsel 

del /f /q vhdsel 

exit


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM