Commit 256c0c57 authored by rocosen's avatar rocosen

feat:获取本地磁盘

parent b9ac1f34
/**
* @Description 获取电脑中所盘符及其名称
* @Author WJW
* @Date 2022-01-25
*/
const process = require('child_process');
// cmd命令
const cmdOrder = {
getAllDrive: () => 'wmic logicaldisk where drivetype=3 get deviceid',
getOneDriveName: (drive: string) =>
`wmic logicaldisk where name="${drive}:" get volumename`,
};
/**
* 获取电脑中所有盘符及其名称
* @returns 电脑中所有盘符及其名称
*/
export default async function getAllDrive(): Promise<string[]> {
let result: string[] = [];
let promise = new Promise((resolve, reject) => {
// 获取电脑中所有盘符
process.exec(cmdOrder.getAllDrive(), (error: any, stdout: any) => {
if (error !== null) {
console.error(error);
return;
}
//@ts-ignore
let stdoutArr = [...stdout];
let res: string[] = [];
stdoutArr.forEach((v: string, i: number) => {
if (v === ':') {
res.push(stdoutArr[i - 1]);
}
});
let resList: {
drive: string;
name: string;
}[] = [];
let promiseArr: Promise<any>[] = [];
// 获取所有盘符的所有名称
res.forEach((v: string) => {
promiseArr.push(
new Promise((resolve, reject) => {
process.exec(
cmdOrder.getOneDriveName(v),
(error: any, stdout: any) => {
if (error !== null) {
console.error(error);
return;
}
let stdoutArr = [...stdout];
let res: string[] = [];
stdoutArr.forEach((v: string, i: number) => {
if (v !== ' ' && v !== '\n' && v !== '\r') {
res.push(v);
}
});
res.splice(0, 10);
resList.push({
drive: v,
name: res.join(''),
});
resolve(true);
}
);
})
);
});
Promise.all(promiseArr).then((res) => {
resolve(resList);
});
});
});
await promise.then((res: any) => {
result = res;
});
// console.log(result);
return result;
}
......@@ -121,7 +121,7 @@ ipcMain.on('resize-home', (event) => {
homeWindown.loadURL(resolveHtmlPath(`index.html#/home`));
positioner.position(homeWindown, tray.getBounds(), alignment);
isDev && homeWindown.webContents.openDevTools();
homeWindown.webContents.openDevTools();
// homeWindown.webContents.openDevTools();
homeWindown.once('ready-to-show', () => {
homeWindown?.show();
});
......
......@@ -14,6 +14,7 @@ import RadioGroup from '@mui/material/RadioGroup';
import FolderOpenIcon from '@mui/icons-material/FolderOpen';
import MenuItem from '@mui/material/MenuItem';
import file from '../../commons/assets/img/file.svg';
import getAllDrive from '../../commons/utils/getAllDrive';
const useStyles = makeStyles()((theme) => {
return {
......@@ -95,6 +96,9 @@ export default (props) => {
setChange(true);
event.stopPropagation();
setMountValue(event.target.value);
getAllDrive().then((res) => {
console.log(res);
});
};
const handleSelectChange = (event) => {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment