情况如下:硬盘分成若干个分区:0,1、0,2、0,3、...
0,1: 安装了 XP,若启动,7 分区为 E:,我的文档位置为 D: 盘
0,2: 安装了 7,若启动,此盘为 C 盘,XP 为 D:,我的文档位置为 E: 盘
0,3: 我的文档位置(X:\Users\用户名\...) X 可能是 D: 也可能是 E:
我在 XP、7 系统安装的时候迁移数据到 0,3 (我的文档)位置。
为了准确的获取我在安装系统时将盘符改到的位置,于是我写了这个批处理:
要求:
1、我的文档位置不能存在 Windows 系统;
2、在不含操作系统的盘上如果存在 X:\Users 文件夹即确定此盘。- set Drive=.
- set Drives=.
- SETLOCAL ENABLEDELAYEDEXPANSION
- set Name=.
- for /f "tokens=3" %%i in ('wmic logicaldisk where DriveType^=3 Get FileSystem^,FreeSpace^,Name^,Size^|findstr ":"') do if not %%i==%SystemDrive% set Name=!Name! %%i
- set Drives=!Name!
- for %%i in (%Drives%) do if not exist "%%i\Windows\explorer.exe" (
- if exist %%i\Users (
- set Drive=%%i
- goto ExitFor
- ) else (
- set Drive=%%i
- )
- )
- :ExitFor
- SETLOCAL DISABLEDELAYEDEXPANSION
- echo %Drive%
- pause
复制代码 总感觉虽然得到结果,但代码有点冗长!大大们能帮忙优化一下吗?谢谢! |