六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 54|回复: 0

修改指定目录和子目录下的文件属性

[复制链接]

升级  40%

4

主题

4

主题

4

主题

童生

Rank: 1

积分
20
 楼主| 发表于 2013-1-26 12:27:37 | 显示全部楼层 |阅读模式
// SetFileAttrib.cpp : Defines the entry point for the console application.// 我对工程的命名为SetFileAttrib,main函数的使用说明是按照这个来写的。#include "stdafx.h"#include <stdio.h>#include <string.h>#include <windows.h>#include <shlwapi.h>#pragma comment(lib, "shlwapi.lib")void SetFileAttrib(const char* curdir){// 遍历指定目录WIN32_FIND_DATA wd;char dir[MAX_PATH];memset(dir, 0, MAX_PATH);sprintf(dir, "%s\\*.*", curdir);HANDLE hFind = FindFirstFile(dir, &wd);if(INVALID_HANDLE_VALUE == hFind){printf("GetLastError:%d\n", GetLastError());return ;}do {if (wd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){if (0 == strcmp(wd.cFileName, ".")|| 0 == strcmp(wd.cFileName, "..")){// 点目录跳过continue;}char szNewDir[MAX_PATH];memset(szNewDir, 0, MAX_PATH);sprintf(szNewDir, "%s\\%s", curdir, wd.cFileName);if(FALSE == SetFileAttributes(szNewDir, FILE_ATTRIBUTE_NORMAL)){printf("修改目录属性失败,目录名:%s\n错误码:%d\n", szNewDir, GetLastError());}else{printf("修改目录属性成功:%s\n", szNewDir);}// 递归调用,修改子目录下的文件属性SetFileAttrib(szNewDir);// 上面已经设置过属性,这里跳过continue;}char szFileName[MAX_PATH];memset(szFileName, 0, MAX_PATH);sprintf(szFileName, "%s\\%s", curdir, wd.cFileName);if(FALSE == SetFileAttributes(szFileName, FILE_ATTRIBUTE_NORMAL)){printf("修改文件属性失败,文件名:%s\n错误码:%d\n", szFileName, GetLastError());}else{printf("修改文件属性成功:%s\n", szFileName);}} while (FindNextFile(hFind, &wd));FindClose(hFind);}int main(int argc, char* argv[]){if (2 != argc){printf("用法:\n""\tSetFileAttrib + 目录名\n""例如:\n""\tSetFileAttrib E:\n");return 0;}if (FALSE == PathFileExists(argv[1])){printf("目录不存在\n");return -1;}SetFileAttrib(argv[1]);return 0;}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

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