[C++] 纯文本查看 复制代码
#include <stdarg.h>
#include <memory.h>
DWORD Options (int argc, LPCTSTR argv [], LPCTSTR OptStr, ...)
{
va_list pFlagList;
LPBOOL pFlag;
int iFlag = 0, iArg;
va_start (pFlagList, OptStr);
while ((pFlag = va_arg (pFlagList, LPBOOL)) != NULL && iFlag < (int)_tcslen (OptStr))
{
*pFlag = FALSE;
for (iArg = 1; !(*pFlag) && iArg < argc && argv [iArg] [0] == _T('-'); iArg++)
*pFlag = wmemchr (argv [iArg], OptStr [iFlag], _tcslen (argv [iArg])) != NULL;
iFlag++;
}
va_end (pFlagList);
for (iArg = 1; iArg < argc && argv [iArg] [0] == _T('-'); iArg++);
return iArg;
}
[C++] 纯文本查看 复制代码
// setFileTime.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
DWORD Options (int argc, LPTSTR argv [], LPCTSTR OptStr, ...)
{
va_list pFlagList;
LPBOOL pFlag;
int iFlag = 0, iArg;
va_start (pFlagList, OptStr);
while ((pFlag = va_arg (pFlagList, LPBOOL)) != NULL && iFlag < (int)_tcslen (OptStr))
{
*pFlag = FALSE;
for (iArg = 1; !(*pFlag) && iArg < argc && argv [iArg] [0] == _T('-'); iArg++)
*pFlag = wmemchr (argv [iArg], OptStr [iFlag], _tcslen (argv [iArg])) != NULL;
iFlag++;
}
va_end (pFlagList);
for (iArg = 1; iArg < argc && argv [iArg] [0] == _T('-'); iArg++);
return iArg;
}
int _tmain(int argc, LPTSTR argv[])
{
FILETIME newFileTime;
LPFILETIME pAccessTime = NULL, pModifyTime = NULL;
HANDLE hFile;
BOOL setAccessTime, setModTime, NotCreateNew, maFlag;
DWORD createFlag;
int i, fileIndex;
fileIndex = Options (argc, argv, _T("amc"), &setAccessTime, &setModTime, &NotCreateNew, NULL);
maFlag = setAccessTime || setModTime;
createFlag = NotCreateNew ? OPEN_EXISTING : OPEN_ALWAYS;
for (i = fileIndex; i < argc; i++) {
hFile = CreateFile (argv, GENERIC_READ | GENERIC_WRITE, 0, NULL, createFlag, FILE_ATTRIBUTE_NORMAL, NULL);
GetSystemTimeAsFileTime(&newFileTime); /* 获取系统时间并转换为文件时间 */
if (setAccessTime || !maFlag)
pAccessTime = &newFileTime;
if (setModTime || !maFlag)
pModifyTime = &newFileTime;
SetFileTime(hFile, (LPFILETIME)NULL, pAccessTime, pModifyTime); /* 设置文件时间 */
}
return 0;
}