将文件从1个目录移动到另一个目录

Moving files from 1 directory to another

本文关键字:另一个 移动 文件 1个      更新时间:2023-10-16

我正在尝试在计算机中的所有目录中打印所有文件名称...我从@Mayur撰写的代码中获得了帮助我希望这可以为我的整个计算机运行...因为它应该覆盖我的整个计算机,所以我希望那条路径动态以涵盖所有驱动器....

我正在从代码中获得帮助...但是在这方面,我必须给一条路。我希望这可以为我的整个计算机运行...因为它应该覆盖我的整个计算机,所以我希望那条路径动态以涵盖所有驱动器....

#include <windows.h>
#include <TCHAR.h>
#include <stdio.h>
void Enum(TCHAR root[0xFF])
{
    HANDLE hFind;
    WIN32_FIND_DATA wfd;
    TCHAR GeneralPath[0xFF];
    TCHAR AgainFolder[0xFF];
    TCHAR FileFullPath[0xFF];
    _stprintf(GeneralPath, _T("%s\*.*"), root);
    hFind = FindFirstFile(GeneralPath, &wfd);
    if(INVALID_HANDLE_VALUE==hFind)
        return;
    do
    {
        if( wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) //Checking Founded File Attribute is it File or Folder/Directory
        {
            if( !_tcscmp(wfd.cFileName, _T(".")) || !_tcscmp(wfd.cFileName, _T("..")) ) //if Founded directory is same(.) or parent(..) then ignore them
                continue;
            _stprintf(AgainFolder, _T("%s\%s"), root, wfd.cFileName);
            Enum(AgainFolder); //Recursion because folder is inside another folder
        }
        else
        {
            _stprintf(FileFullPath, _T("%s\%s"), root, wfd.cFileName); //  "Folder\fileName.extension"
            _tprintf(_T("%sn"),FileFullPath);
        }
    }while(FindNextFile(hFind, &wfd));
    CloseHandle(hFind);
    hFind=INVALID_HANDLE_VALUE;
}
int main()
{
    TCHAR Folder[0xFF]=_T("c:\windows");
    Enum(Folder);
    return 0;
}

我尝试使用用于循环的...

while(1)
    {
        string s="abcdefghijklmnopqrstuvwxyz";
        for(int i=0;i<26;i++)
        {
        string t=s[i]+":\test";
    TCHAR Folder[0xFF]=_T(t);
    Enum(Folder);
    Sleep(1000);
        }
    }

,但这给了我错误。错误是::错误:必须使用带括号的初始化器初始化数组 tchar文件夹[0xff] = _ t(t);我请您查看此

结果:仅针对给定路径打印预期:我试图在计算机中的所有目录中打印所有文件名

您的错误是_T宏仅应该在 string和字符文字上使用。这不是将任何内容转换为TCHAR字符串的通用方法,因此_T(t) tstring不起作用。

在上面的代码中尝试做您要做的事情的一种简单方法是此

string s = "abcdefghijklmnopqrstuvwxyz";
basic_string<TCHAR> folder(_T("X:\test")); 
for (int i = 0; i < 26; ++i) { 
    folder[0] = s[i]; 
    Enum(folder.c_str());
}

只需创建一个正确的形式的字符串,并在每次循环时替换驱动器字母。