你们帮我看看这份代码有没有问题?
  • 板块灌水区
  • 楼主jlwz
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/8/26 23:17
  • 上次更新2023/11/3 00:59:19
查看原帖
你们帮我看看这份代码有没有问题?
708997
jlwz楼主2023/8/26 23:17

反正我电脑上测试是没有问题的,我的这份代码实现的是将所有插入电脑上的U盘上面的资料,全部备份到D盘。

#include<windows.h>
#include<bits\stdc++.h>
using namespace std;

int num[1000],i=1;

string GetUDiskRoot()
{
    string UDiskRoot = "";
    UINT DiskType;
    DWORD szAllDriveStr = GetLogicalDriveStringsA(0, NULL);
    char *pDriveStr = new char[szAllDriveStr + sizeof(" ")];
    char *pForDelete = pDriveStr;
    GetLogicalDriveStringsA(szAllDriveStr, pDriveStr);
    DWORD szDriveStr = strlen(pDriveStr);
    while (szDriveStr > 0)
    {
        DiskType = GetDriveTypeA(pDriveStr);
        switch (DiskType)
        {
        case DRIVE_NO_ROOT_DIR:
            break;
        case DRIVE_REMOVABLE:
            // 移动存储设备
            UDiskRoot = pDriveStr;
            break;
        case DRIVE_FIXED:
            // 固定硬盘驱动器
            break;
        case DRIVE_REMOTE:
            // 网络驱动器
            break;
        case DRIVE_CDROM:
            // 光盘驱动器
            break;
        }
        pDriveStr += szDriveStr + 1;
        szDriveStr = strlen(pDriveStr);
    }
    delete[] pForDelete;
    return UDiskRoot;
}

DWORD GetPartitionVolumeSerialNumber();

int main()
{
	ifstream read;
	read.open("daily.txt",ios::in);
	while(read>>num[i])
		i++;
	while(1)
	{
		ofstream out;
		out.open("daily.txt",ios::app);
		long long x=GetPartitionVolumeSerialNumber();
		char a[]="xcopy ";
		string s=GetUDiskRoot();
		int t=i-1;
		bool flag=1;
		while(t>0)
		{
			if(num[t]==x)
			{
				flag=0;
				break;
			}
		}
		if(!flag)
			continue;
		num[i]=x;
		i++;
		out<<x<<endl;
		const char* b;
		b=s.data();
		char c[]="\\ D:\\usb\\%date:~0,4%%date:~5,2%%date:~8,2% /S/E/I";
		system(strcat(strcat(a,b),c));
		Sleep(3000);
	}
	
	return 0;
 }
DWORD GetPartitionVolumeSerialNumber()
{
    TCHAR lpRootPathName[]= "E:\\";
    TCHAR lpVolumeNameBuffer[ 12 ];
    DWORD nVolumeNameSize =12; 
    DWORD VolumeSerialNumber;
    DWORD MaximumComponentLength; 
    TCHAR lpFileSystemNameBuffer[ 10 ]; 
    DWORD nFileSystemNameSize = 10; 
    DWORD FileSystemFlags; 
    BOOL ret = GetVolumeInformation( lpRootPathName,    // _T("C:\\")
        lpVolumeNameBuffer,
        nVolumeNameSize, 
        &VolumeSerialNumber,
        &MaximumComponentLength, 
        &FileSystemFlags, 
        lpFileSystemNameBuffer,
        nFileSystemNameSize); 
    if( ret )
        return VolumeSerialNumber;
    else
        return 0;
}
2023/8/26 23:17
加载中...