比如:文件在"D:\Win8.1_GPT_VHD"目录下 在批处理内直接输入这个路径运行,并且要在第41行指定文件名才能运行,否则会出错!如果直接拖进去就变成"D:\Win8.1_GPT_VHD\Win8.1_GPT_VHD.VHDX"运行就出错!
我的想法是直接把文件拖进去,批处理自动识别文件名。不用再手动输入!- @echo off
-
- :vhdx_path
- bcdedit -enum {current}|find /i "vhdx="
- if %errorlevel%==0 (set drive=D:) else set drive=C:
-
- color 1f
- cls
- echo.
- echo.请输入已创建父vhdx文件的路径。
- echo.
- set vhdx_path=
- set /p vhdx_path=请输入:
- if "%vhdx_path%"=="" goto :vhdx_path
- if not "%vhdx_path:~1,2%"==":\" (
- color 4f
- cls
- echo.
- echo.路径输入错误。
- echo.
- set /p t=按回车键重输。
- goto :vhdx_path
- )
-
- for /f "delims==" %%i in ("%vhdx_path%") do set sys_drive=%%~di
-
- if not exist %sys_drive%\nul (
- color 4f
- cls
- echo.
- echo.%sys_drive:~0,1%盘不存在。
- echo.
- set /p t=按回车键重新输入。
- goto :vhdx_path
- )
-
- if /i "%vhdx_path:~-4%"==".vhdx" (
- for /f "delims==" %%i in ("%vhdx_path%") do set vhdx_name=%%~ni
- for /f "delims==" %%i in ("%vhdx_path%") do set sys_folder=%%~pi
- ) else (
- for /f "delims==" %%i in ("%vhdx_path%") do set vhdx_name=Win7
- for /f "delims==" %%i in ("%vhdx_path%") do set sys_folder=%%~pnxi
- )
-
- if "%sys_folder:~-1%"=="\" set sys_folder=%sys_folder:~0,-1%
-
- if "%sys_folder%"=="" (
- COLOR 4f
- cls
- echo.
- echo.请勿将路径设在分区根目录
- echo.
- set /p t=按回车键重输。
- goto :vhdx_path
- )
-
- if not exist "%sys_drive%%sys_folder%\%vhdx_name%.vhdx" (
- COLOR 4f
- cls
- echo.
- echo."%sys_drive%%sys_folder%\%vhdx_name%.vhdx"不存在。
- echo.
- set /p t=按回车键重输。
- goto :vhdx_path
- )
-
- :sub
-
- color 1f
- cls
- echo.
- echo.输入子vhdx文件的名字。
- echo.
- set sub_name=
- set /p sub_name=请输入:
- if "%sub_name%"=="" goto :sub
-
- color 0f
- cls
- echo.
- echo.正在创建子vhdx文件。。。
- echo.
-
- echo create vdisk file="%sys_drive%%sys_folder%\%sub_name%.vhdx" parent="%sys_drive%%sys_folder%\%vhdx_name%.vhdx" > "%temp%\create.txt"
- diskpart /s "%temp%\create.txt"
-
- color 1f
- cls
- echo.
- echo.已成功创建子vhdx文件。
- pause
-
- exit
复制代码
|