大家好,由于我个人经常使用Ansys软件,软件工程文件要求路径为全部英文,否则会导致workbench内部模块求解报错。因此编写了这个右键代码,主要实现效果如下:
代码主要实现思路:
1. 安装文件:
1.1获取当前位置,编写注册表文件,
1.2写入注册表后,删除注册表文件。
2.执行文件:
2.1获取右键文件夹路径,获取用户输入盘符
2.2利用subst命令挂载路径到盘符
2.3挂载成功后等待用户输入确认取消
代码实现主要分为两个文件:
①安装文件<map_folder_to_drive_install.bat>
[Asm] 纯文本查看 复制代码 @echo off
setlocal enabledelayedexpansion
:: 获取当前批处理文件所在的文件夹路径
set "currentFolder=%~dp0"
set "batFileName=map_folder_to_drive.bat"
set "batFilePath=%currentFolder%%batFileName%"
:: 确保路径中的反斜杠是双反斜杠(因为 reg 文件需要转义)
set "batFilePath=%batFilePath:\=\\%"
:: 第一步:生成 .reg 文件
set "regFilePath=%currentFolder%map_folder_to_drive.reg"
(
echo Windows Registry Editor Version 5.00
echo.
echo [HKEY_CLASSES_ROOT\Directory\shell\MapFolderToDrive]
echo @="Map Folder to Drive"
echo.
echo [HKEY_CLASSES_ROOT\Directory\shell\MapFolderToDrive\command]
echo @="\"%batFilePath%\" \"%%1\""
) > "%regFilePath%"
pause
pause
:: 第二步:应用 .reg 文件到注册表
"C:\Windows\System32\reg.exe" import "%regFilePath%"
if !errorlevel! == 0 (
echo Successfully added to context menu.
) else (
echo Failed to add to context menu.
)
:: 第三步:删除生成的 .reg 文件(可选)
del "%regFilePath%"
pause
②执行文件<map_folder_to_drive.bat>
[Asm] 纯文本查看 复制代码 @echo off
setlocal enabledelayedexpansion
:: 第一步:获取传递过来的文件夹路径
set "currentFolder=%~1"
if not defined currentFolder (
echo No folder path provided.
pause
exit /b
)
echo Current folder is: %currentFolder%
:: 第二步:要求用户输入盘符
:input
set /p "driveLetter=请输入要挂载的盘符(例如 E):"
set "driveLetter=%driveLetter:~0,1%"
if not defined driveLetter (
echo 盘符不能为空,请重新输入!
goto input
)
if not "%driveLetter%"=="%driveLetter: =%" (
echo 盘符不能包含空格,请重新输入!
goto input
)
if not "%driveLetter%"=="%driveLetter:~0,1%" (
echo 盘符必须是单个字母,请重新输入!
goto input
)
:: 第三步:使用subst命令挂载文件夹为指定盘符
%SystemRoot%\system32\subst.exe %driveLetter%: "%currentFolder%"
if !errorlevel! == 0 (
echo Folder "%currentFolder%" has been mapped to drive %driveLetter%:
) else (
echo Failed to map folder "%currentFolder%" to drive %driveLetter%:
)
:: 第四步:提供清除功能
:cleanup
set /p "cleanup=请输入 1 来清除挂载的磁盘,或按任意键退出:"
if "%cleanup%"=="1" (
%SystemRoot%\system32\subst.exe %driveLetter%: /d
if !errorlevel! == 0 (
echo Drive %driveLetter%: has been successfully unmounted.
) else (
echo Failed to unmount drive %driveLetter%:.
)
) else (
echo Exiting without unmounting.
)
pause
文件结构:
说明:
挂载成功后可以关闭bat文件界面,不用等输入,关闭后,如需取消挂载,可以再次右键输入相同盘符在提示取消后输入即可 |