吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4389|回复: 14
收起左侧

[Windows] 鼠标右键挂载文件夹为本地磁盘软件V1.0

  [复制链接]
shitou6237 发表于 2025-5-1 11:08
大家好,由于我个人经常使用Ansys软件,软件工程文件要求路径为全部英文,否则会导致workbench内部模块求解报错。因此编写了这个右键代码,主要实现效果如下:
1212.png
image.png
代码主要实现思路:
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



文件结构:
image.png
说明:
挂载成功后可以关闭bat文件界面,不用等输入,关闭后,如需取消挂载,可以再次右键输入相同盘符在提示取消后输入即可

免费评分

参与人数 7吾爱币 +8 热心值 +7 收起 理由
nrevog + 1 + 1 我很赞同!
lough_007 + 1 + 1 谢谢@Thanks!
dogox + 1 + 1 我很赞同!
kenna.cc + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yusen7983 + 1 + 1 谢谢@Thanks!
ckloder + 1 + 1 谢谢@Thanks!
Codeman + 2 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| shitou6237 发表于 2025-5-12 09:29
konoko 发表于 2025-5-10 14:56
感谢楼主分享!很好用。。顺便打听下CMD中文乱码的问题,chcp 65001 不管用。win11

你试下用记事本把bat文件另存为ANSI格式
52soft 发表于 2025-5-1 11:22
aigaboy 发表于 2025-5-1 14:07
zkm815 发表于 2025-5-1 16:04
字体渲染得不错,但我总觉得微软版的兼容性不好
52PJ070 发表于 2025-5-1 17:29
不错的软件,感谢楼主分享!
xipeiyao 发表于 2025-5-1 18:52
有意思。很实用的软件
j542936 发表于 2025-5-1 22:35
新建盘符的名称怎么不是文件夹的名称?
odinchu 发表于 2025-5-2 21:06
本帖最后由 odinchu 于 2025-5-2 21:10 编辑

方便的程序,
konoko 发表于 2025-5-10 14:56
感谢楼主分享!很好用。。顺便打听下CMD中文乱码的问题,chcp 65001 不管用。win11
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-8-10 11:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表