Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir uygulama, GetFileAttributesveya GetFileAttributesExişlevinikullanarak dosya özniteliklerini alabilir. CreateFile ve SetFileAttributes işlevleri özniteliklerin çoğunu ayarlayabilir. Ancak, uygulamalar tüm öznitelikleri ayarlayamaz.
Bu konudaki kod örneği, geçerli dizindeki tüm metin dosyalarını (.txt) yeni bir salt okunur dosya dizinine kopyalamak için CopyFile işlevini kullanır. Gerekirse, yeni dizindeki dosyalar salt okunur olarak değiştirilir.
Uygulama, CreateDirectory işlevini kullanarak parametre olarak belirtilen dizini oluşturur. Dizin hali hazırda mevcut olmamalıdır.
Uygulama, FindFirstFile ve FindNextFileişlevlerinikullanarak geçerli dizinde tüm metin dosyalarını arar. Her metin dosyası \TextRO dizinine kopyalanır. Bir dosya kopyalandıktan sonra, GetFileAttributes işlevi bir dosyanın salt okunur olup olmadığını belirler. Dosya salt okunur değilse, uygulama dizinleri \TextRO olarak değiştirir ve SetFileAttributes işlevini kullanarak kopyalanan dosyayı salt okunur olarak dönüştürür.
Geçerli dizindeki tüm metin dosyaları kopyalandıktan sonra uygulama, FindClose işlevini kullanarak arama tutamacını kapatır.
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <strsafe.h>
void _tmain(int argc, TCHAR* argv[])
{
WIN32_FIND_DATA FileData;
HANDLE hSearch;
DWORD dwAttrs;
TCHAR szNewPath[MAX_PATH];
BOOL fFinished = FALSE;
if(argc != 2)
{
_tprintf(TEXT("Usage: %s <dir>\n"), argv[0]);
return;
}
// Create a new directory.
if (!CreateDirectory(argv[1], NULL))
{
printf("CreateDirectory failed (%d)\n", GetLastError());
return;
}
// Start searching for text files in the current directory.
hSearch = FindFirstFile(TEXT("*.txt"), &FileData);
if (hSearch == INVALID_HANDLE_VALUE)
{
printf("No text files found.\n");
return;
}
// Copy each .TXT file to the new directory
// and change it to read only, if not already.
while (!fFinished)
{
StringCchPrintf(szNewPath, sizeof(szNewPath)/sizeof(szNewPath[0]), TEXT("%s\\%s"), argv[1], FileData.cFileName);
if (CopyFile(FileData.cFileName, szNewPath, FALSE))
{
dwAttrs = GetFileAttributes(FileData.cFileName);
if (dwAttrs==INVALID_FILE_ATTRIBUTES) return;
if (!(dwAttrs & FILE_ATTRIBUTE_READONLY))
{
SetFileAttributes(szNewPath,
dwAttrs | FILE_ATTRIBUTE_READONLY);
}
}
else
{
printf("Could not copy file.\n");
return;
}
if (!FindNextFile(hSearch, &FileData))
{
if (GetLastError() == ERROR_NO_MORE_FILES)
{
_tprintf(TEXT("Copied *.txt to %s\n"), argv[1]);
fFinished = TRUE;
}
else
{
printf("Could not find next file.\n");
return;
}
}
}
// Close the search handle.
FindClose(hSearch);
}
İlgili konular