mirror of
https://github.com/reactos/reactos.git
synced 2024-06-15 17:11:52 +00:00
[CMD]
Implement switch /R for dir command. It allows enumerating alternate data streams of files Commit dedicated to Ged svn path=/trunk/; revision=68823
This commit is contained in:
parent
b72e356c87
commit
6686b09385
|
@ -132,6 +132,9 @@
|
|||
* Removed variables formerly in use to handle pagination
|
||||
* Pagination belongs to ConOutPrintfPaging
|
||||
* Removed already commented out code of old pagination
|
||||
*
|
||||
* 25-Aug-2015 (Pierre Schweitzer)
|
||||
* Implemented /R switch
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
|
@ -172,6 +175,7 @@ typedef struct _DirSwitchesFlags
|
|||
BOOL bRecursive; /* Displays files in specified directory and all sub */
|
||||
BOOL bShortName; /* Displays the sort name of files if exist */
|
||||
BOOL b4Digit; /* Four digit year */
|
||||
BOOL bDataStreams; /* Displays alternate data streams */
|
||||
struct
|
||||
{
|
||||
DWORD dwAttribVal; /* The desired state of attribute */
|
||||
|
@ -189,9 +193,21 @@ typedef struct _DirSwitchesFlags
|
|||
} stTimeField; /* The time field to display or use for sorting */
|
||||
} DIRSWITCHFLAGS, *LPDIRSWITCHFLAGS;
|
||||
|
||||
typedef struct _DIRFINDLISTNODE
|
||||
typedef struct _DIRFINDSTREAMNODE
|
||||
{
|
||||
WIN32_FIND_STREAM_DATA stStreamInfo;
|
||||
struct _DIRFINDSTREAMNODE *ptrNext;
|
||||
} DIRFINDSTREAMNODE, *PDIRFINDSTREAMNODE;
|
||||
|
||||
typedef struct _DIRFINDINFO
|
||||
{
|
||||
WIN32_FIND_DATA stFindInfo;
|
||||
PDIRFINDSTREAMNODE ptrHead;
|
||||
} DIRFINDINFO, *PDIRFINDINFO;
|
||||
|
||||
typedef struct _DIRFINDLISTNODE
|
||||
{
|
||||
DIRFINDINFO stInfo;
|
||||
struct _DIRFINDLISTNODE *ptrNext;
|
||||
} DIRFINDLISTNODE, *PDIRFINDLISTNODE;
|
||||
|
||||
|
@ -325,6 +341,8 @@ DirReadParam(LPTSTR Line, /* [IN] The line with the parameters & s
|
|||
lpFlags->bRecursive = ! bNegative;
|
||||
else if (cCurUChar == _T('X'))
|
||||
lpFlags->bShortName = ! bNegative;
|
||||
else if (cCurChar == _T('R'))
|
||||
lpFlags->bDataStreams = ! bNegative;
|
||||
else if (cCurChar == _T('4'))
|
||||
lpFlags->b4Digit = ! bNegative;
|
||||
else if (cCurChar == _T('?'))
|
||||
|
@ -838,7 +856,7 @@ getName(const TCHAR* file, TCHAR * dest)
|
|||
* The function that prints in new style
|
||||
*/
|
||||
static VOID
|
||||
DirPrintNewList(LPWIN32_FIND_DATA ptrFiles[], /* [IN]Files' Info */
|
||||
DirPrintNewList(PDIRFINDINFO ptrFiles[], /* [IN]Files' Info */
|
||||
DWORD dwCount, /* [IN] The quantity of files */
|
||||
TCHAR *szCurPath, /* [IN] Full path of current directory */
|
||||
LPDIRSWITCHFLAGS lpFlags) /* [IN] The flags used */
|
||||
|
@ -850,17 +868,18 @@ DirPrintNewList(LPWIN32_FIND_DATA ptrFiles[], /* [IN]Files' Info */
|
|||
TCHAR szTime[20];
|
||||
INT iSizeFormat;
|
||||
ULARGE_INTEGER u64FileSize;
|
||||
PDIRFINDSTREAMNODE ptrCurStream;
|
||||
|
||||
for (i = 0; i < dwCount && !bCtrlBreak; i++)
|
||||
{
|
||||
/* Calculate size */
|
||||
if (ptrFiles[i]->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
|
||||
if (ptrFiles[i]->stFindInfo.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
|
||||
{
|
||||
/* Junction */
|
||||
iSizeFormat = -14;
|
||||
_tcscpy(szSize, _T("<JUNCTION>"));
|
||||
}
|
||||
else if (ptrFiles[i]->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||
else if (ptrFiles[i]->stFindInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||
{
|
||||
/* Directory */
|
||||
iSizeFormat = -14;
|
||||
|
@ -870,18 +889,18 @@ DirPrintNewList(LPWIN32_FIND_DATA ptrFiles[], /* [IN]Files' Info */
|
|||
{
|
||||
/* File */
|
||||
iSizeFormat = 14;
|
||||
u64FileSize.HighPart = ptrFiles[i]->nFileSizeHigh;
|
||||
u64FileSize.LowPart = ptrFiles[i]->nFileSizeLow;
|
||||
u64FileSize.HighPart = ptrFiles[i]->stFindInfo.nFileSizeHigh;
|
||||
u64FileSize.LowPart = ptrFiles[i]->stFindInfo.nFileSizeLow;
|
||||
ConvertULargeInteger(u64FileSize.QuadPart, szSize, 20, lpFlags->bTSeperator);
|
||||
}
|
||||
|
||||
/* Calculate short name */
|
||||
szShortName[0] = _T('\0');
|
||||
if (lpFlags->bShortName)
|
||||
_stprintf(szShortName, _T(" %-12s"), ptrFiles[i]->cAlternateFileName);
|
||||
_stprintf(szShortName, _T(" %-12s"), ptrFiles[i]->stFindInfo.cAlternateFileName);
|
||||
|
||||
/* Format date and time */
|
||||
DirPrintFileDateTime(szDate, szTime, ptrFiles[i], lpFlags);
|
||||
DirPrintFileDateTime(szDate, szTime, &ptrFiles[i]->stFindInfo, lpFlags);
|
||||
|
||||
/* Print the line */
|
||||
DirPrintf(lpFlags, _T("%10s %-6s %*s%s %s\n"),
|
||||
|
@ -890,7 +909,25 @@ DirPrintNewList(LPWIN32_FIND_DATA ptrFiles[], /* [IN]Files' Info */
|
|||
iSizeFormat,
|
||||
szSize,
|
||||
szShortName,
|
||||
ptrFiles[i]->cFileName);
|
||||
ptrFiles[i]->stFindInfo.cFileName);
|
||||
|
||||
/* Now, loop on the streams */
|
||||
ptrCurStream = ptrFiles[i]->ptrHead;
|
||||
while (ptrCurStream)
|
||||
{
|
||||
ConvertULargeInteger(ptrCurStream->stStreamInfo.StreamSize.QuadPart, szSize, 20, lpFlags->bTSeperator);
|
||||
|
||||
/* Print the line */
|
||||
DirPrintf(lpFlags, _T("%10s %-6s %*s%s %s%s\n"),
|
||||
L"",
|
||||
L"",
|
||||
16,
|
||||
szSize,
|
||||
L"",
|
||||
ptrFiles[i]->stFindInfo.cFileName,
|
||||
ptrCurStream->stStreamInfo.cStreamName);
|
||||
ptrCurStream = ptrCurStream->ptrNext;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -901,7 +938,7 @@ DirPrintNewList(LPWIN32_FIND_DATA ptrFiles[], /* [IN]Files' Info */
|
|||
* The function that prints in wide list
|
||||
*/
|
||||
static VOID
|
||||
DirPrintWideList(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
|
||||
DirPrintWideList(PDIRFINDINFO ptrFiles[], /* [IN] Files' Info */
|
||||
DWORD dwCount, /* [IN] The quantity of files */
|
||||
TCHAR *szCurPath, /* [IN] Full path of current directory */
|
||||
LPDIRSWITCHFLAGS lpFlags) /* [IN] The flags used */
|
||||
|
@ -919,16 +956,16 @@ DirPrintWideList(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
|
|||
iLongestName = 1;
|
||||
for (i = 0; i < dwCount; i++)
|
||||
{
|
||||
if (ptrFiles[i]->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||
if (ptrFiles[i]->stFindInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||
{
|
||||
/* Directories need 2 additinal characters for brackets */
|
||||
if ((_tcslen(ptrFiles[i]->cFileName) + 2) > iLongestName)
|
||||
iLongestName = _tcslen(ptrFiles[i]->cFileName) + 2;
|
||||
if ((_tcslen(ptrFiles[i]->stFindInfo.cFileName) + 2) > iLongestName)
|
||||
iLongestName = _tcslen(ptrFiles[i]->stFindInfo.cFileName) + 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_tcslen(ptrFiles[i]->cFileName) > iLongestName)
|
||||
iLongestName = _tcslen(ptrFiles[i]->cFileName);
|
||||
if (_tcslen(ptrFiles[i]->stFindInfo.cFileName) > iLongestName)
|
||||
iLongestName = _tcslen(ptrFiles[i]->stFindInfo.cFileName);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -963,10 +1000,10 @@ DirPrintWideList(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
|
|||
|
||||
if (temp >= dwCount) break;
|
||||
|
||||
if (ptrFiles[temp]->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||
_stprintf(szTempFname, _T("[%s]"), ptrFiles[temp]->cFileName);
|
||||
if (ptrFiles[temp]->stFindInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||
_stprintf(szTempFname, _T("[%s]"), ptrFiles[temp]->stFindInfo.cFileName);
|
||||
else
|
||||
_stprintf(szTempFname, _T("%s"), ptrFiles[temp]->cFileName);
|
||||
_stprintf(szTempFname, _T("%s"), ptrFiles[temp]->stFindInfo.cFileName);
|
||||
|
||||
DirPrintf(lpFlags, _T("%-*s"), iLongestName + 1, szTempFname);
|
||||
}
|
||||
|
@ -983,7 +1020,7 @@ DirPrintWideList(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
|
|||
* The function that prints in old style
|
||||
*/
|
||||
static VOID
|
||||
DirPrintOldList(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
|
||||
DirPrintOldList(PDIRFINDINFO ptrFiles[], /* [IN] Files' Info */
|
||||
DWORD dwCount, /* [IN] The quantity of files */
|
||||
TCHAR * szCurPath, /* [IN] Full path of current directory */
|
||||
LPDIRSWITCHFLAGS lpFlags) /* [IN] The flags used */
|
||||
|
@ -999,21 +1036,21 @@ DirPrintOldList(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
|
|||
for (i = 0; i < dwCount && !bCtrlBreak; i++)
|
||||
{
|
||||
/* Broke 8.3 format */
|
||||
if (*ptrFiles[i]->cAlternateFileName )
|
||||
if (*ptrFiles[i]->stFindInfo.cAlternateFileName )
|
||||
{
|
||||
/* If the file is long named then we read the alter name */
|
||||
getName( ptrFiles[i]->cAlternateFileName, szName);
|
||||
_tcscpy(szExt, getExt( ptrFiles[i]->cAlternateFileName));
|
||||
getName( ptrFiles[i]->stFindInfo.cAlternateFileName, szName);
|
||||
_tcscpy(szExt, getExt( ptrFiles[i]->stFindInfo.cAlternateFileName));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If the file is not long name we read its original name */
|
||||
getName( ptrFiles[i]->cFileName, szName);
|
||||
_tcscpy(szExt, getExt( ptrFiles[i]->cFileName));
|
||||
getName( ptrFiles[i]->stFindInfo.cFileName, szName);
|
||||
_tcscpy(szExt, getExt( ptrFiles[i]->stFindInfo.cFileName));
|
||||
}
|
||||
|
||||
/* Calculate size */
|
||||
if (ptrFiles[i]->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||
if (ptrFiles[i]->stFindInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||
{
|
||||
/* Directory, no size it's a directory*/
|
||||
iSizeFormat = -17;
|
||||
|
@ -1023,13 +1060,13 @@ DirPrintOldList(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
|
|||
{
|
||||
/* File */
|
||||
iSizeFormat = 17;
|
||||
u64FileSize.HighPart = ptrFiles[i]->nFileSizeHigh;
|
||||
u64FileSize.LowPart = ptrFiles[i]->nFileSizeLow;
|
||||
u64FileSize.HighPart = ptrFiles[i]->stFindInfo.nFileSizeHigh;
|
||||
u64FileSize.LowPart = ptrFiles[i]->stFindInfo.nFileSizeLow;
|
||||
ConvertULargeInteger(u64FileSize.QuadPart, szSize, 20, lpFlags->bTSeperator);
|
||||
}
|
||||
|
||||
/* Format date and time */
|
||||
DirPrintFileDateTime(szDate,szTime,ptrFiles[i],lpFlags);
|
||||
DirPrintFileDateTime(szDate,szTime,&ptrFiles[i]->stFindInfo,lpFlags);
|
||||
|
||||
/* Print the line */
|
||||
DirPrintf(lpFlags, _T("%-8s %-3s %*s %s %s\n"),
|
||||
|
@ -1048,7 +1085,7 @@ DirPrintOldList(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
|
|||
* The function that prints in bare format
|
||||
*/
|
||||
static VOID
|
||||
DirPrintBareList(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
|
||||
DirPrintBareList(PDIRFINDINFO ptrFiles[], /* [IN] Files' Info */
|
||||
DWORD dwCount, /* [IN] The number of files */
|
||||
LPTSTR lpCurPath, /* [IN] Full path of current directory */
|
||||
LPDIRSWITCHFLAGS lpFlags) /* [IN] The flags used */
|
||||
|
@ -1057,8 +1094,8 @@ DirPrintBareList(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
|
|||
|
||||
for (i = 0; i < dwCount && !bCtrlBreak; i++)
|
||||
{
|
||||
if ((_tcscmp(ptrFiles[i]->cFileName, _T(".")) == 0) ||
|
||||
(_tcscmp(ptrFiles[i]->cFileName, _T("..")) == 0))
|
||||
if ((_tcscmp(ptrFiles[i]->stFindInfo.cFileName, _T(".")) == 0) ||
|
||||
(_tcscmp(ptrFiles[i]->stFindInfo.cFileName, _T("..")) == 0))
|
||||
{
|
||||
/* at bare format we don't print "." and ".." folder */
|
||||
continue;
|
||||
|
@ -1066,12 +1103,12 @@ DirPrintBareList(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
|
|||
if (lpFlags->bRecursive)
|
||||
{
|
||||
/* at recursive mode we print full path of file */
|
||||
DirPrintf(lpFlags, _T("%s\\%s\n"), lpCurPath, ptrFiles[i]->cFileName);
|
||||
DirPrintf(lpFlags, _T("%s\\%s\n"), lpCurPath, ptrFiles[i]->stFindInfo.cFileName);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* if we are not in recursive mode we print the file names */
|
||||
DirPrintf(lpFlags, _T("%s\n"), ptrFiles[i]->cFileName);
|
||||
DirPrintf(lpFlags, _T("%s\n"), ptrFiles[i]->stFindInfo.cFileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1083,7 +1120,7 @@ DirPrintBareList(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
|
|||
* The functions that prints the files list
|
||||
*/
|
||||
static VOID
|
||||
DirPrintFiles(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
|
||||
DirPrintFiles(PDIRFINDINFO ptrFiles[], /* [IN] Files' Info */
|
||||
DWORD dwCount, /* [IN] The quantity of files */
|
||||
TCHAR *szCurPath, /* [IN] Full path of current directory */
|
||||
LPDIRSWITCHFLAGS lpFlags) /* [IN] The flags used */
|
||||
|
@ -1139,8 +1176,8 @@ DirPrintFiles(LPWIN32_FIND_DATA ptrFiles[], /* [IN] Files' Info */
|
|||
* Compares 2 files based on the order criteria
|
||||
*/
|
||||
static BOOL
|
||||
CompareFiles(LPWIN32_FIND_DATA lpFile1, /* [IN] A pointer to WIN32_FIND_DATA of file 1 */
|
||||
LPWIN32_FIND_DATA lpFile2, /* [IN] A pointer to WIN32_FIND_DATA of file 2 */
|
||||
CompareFiles(PDIRFINDINFO lpFile1, /* [IN] A pointer to WIN32_FIND_DATA of file 1 */
|
||||
PDIRFINDINFO lpFile2, /* [IN] A pointer to WIN32_FIND_DATA of file 2 */
|
||||
LPDIRSWITCHFLAGS lpFlags) /* [IN] The flags that we use to list */
|
||||
{
|
||||
ULARGE_INTEGER u64File1;
|
||||
|
@ -1157,10 +1194,10 @@ CompareFiles(LPWIN32_FIND_DATA lpFile1, /* [IN] A pointer to WIN32_FIND_DATA of
|
|||
{
|
||||
case ORDER_SIZE: /* Order by size /o:s */
|
||||
/* concat the 32bit integers to a 64bit */
|
||||
u64File1.LowPart = lpFile1->nFileSizeLow;
|
||||
u64File1.HighPart = lpFile1->nFileSizeHigh;
|
||||
u64File2.LowPart = lpFile2->nFileSizeLow;
|
||||
u64File2.HighPart = lpFile2->nFileSizeHigh;
|
||||
u64File1.LowPart = lpFile1->stFindInfo.nFileSizeLow;
|
||||
u64File1.HighPart = lpFile1->stFindInfo.nFileSizeHigh;
|
||||
u64File2.LowPart = lpFile2->stFindInfo.nFileSizeLow;
|
||||
u64File2.HighPart = lpFile2->stFindInfo.nFileSizeHigh;
|
||||
|
||||
/* In case that differnce is too big for a long */
|
||||
if (u64File1.QuadPart < u64File2.QuadPart)
|
||||
|
@ -1172,16 +1209,16 @@ CompareFiles(LPWIN32_FIND_DATA lpFile1, /* [IN] A pointer to WIN32_FIND_DATA of
|
|||
break;
|
||||
|
||||
case ORDER_DIRECTORY: /* Order by directory attribute /o:g */
|
||||
iComp = ((lpFile2->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)-
|
||||
(lpFile1->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY));
|
||||
iComp = ((lpFile2->stFindInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)-
|
||||
(lpFile1->stFindInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY));
|
||||
break;
|
||||
|
||||
case ORDER_EXTENSION: /* Order by extension name /o:e */
|
||||
iComp = _tcsicmp(getExt(lpFile1->cFileName),getExt(lpFile2->cFileName));
|
||||
iComp = _tcsicmp(getExt(lpFile1->stFindInfo.cFileName),getExt(lpFile2->stFindInfo.cFileName));
|
||||
break;
|
||||
|
||||
case ORDER_NAME: /* Order by filename /o:n */
|
||||
iComp = _tcsicmp(lpFile1->cFileName, lpFile2->cFileName);
|
||||
iComp = _tcsicmp(lpFile1->stFindInfo.cFileName, lpFile2->stFindInfo.cFileName);
|
||||
break;
|
||||
|
||||
case ORDER_TIME: /* Order by file's time /o:t */
|
||||
|
@ -1190,24 +1227,24 @@ CompareFiles(LPWIN32_FIND_DATA lpFile1, /* [IN] A pointer to WIN32_FIND_DATA of
|
|||
{
|
||||
case TF_CREATIONDATE:
|
||||
/* concat the 32bit integers to a 64bit */
|
||||
u64File1.LowPart = lpFile1->ftCreationTime.dwLowDateTime;
|
||||
u64File1.HighPart = lpFile1->ftCreationTime.dwHighDateTime ;
|
||||
u64File2.LowPart = lpFile2->ftCreationTime.dwLowDateTime;
|
||||
u64File2.HighPart = lpFile2->ftCreationTime.dwHighDateTime ;
|
||||
u64File1.LowPart = lpFile1->stFindInfo.ftCreationTime.dwLowDateTime;
|
||||
u64File1.HighPart = lpFile1->stFindInfo.ftCreationTime.dwHighDateTime ;
|
||||
u64File2.LowPart = lpFile2->stFindInfo.ftCreationTime.dwLowDateTime;
|
||||
u64File2.HighPart = lpFile2->stFindInfo.ftCreationTime.dwHighDateTime ;
|
||||
break;
|
||||
case TF_LASTACCESSEDDATE :
|
||||
/* concat the 32bit integers to a 64bit */
|
||||
u64File1.LowPart = lpFile1->ftLastAccessTime.dwLowDateTime;
|
||||
u64File1.HighPart = lpFile1->ftLastAccessTime.dwHighDateTime ;
|
||||
u64File2.LowPart = lpFile2->ftLastAccessTime.dwLowDateTime;
|
||||
u64File2.HighPart = lpFile2->ftLastAccessTime.dwHighDateTime ;
|
||||
u64File1.LowPart = lpFile1->stFindInfo.ftLastAccessTime.dwLowDateTime;
|
||||
u64File1.HighPart = lpFile1->stFindInfo.ftLastAccessTime.dwHighDateTime ;
|
||||
u64File2.LowPart = lpFile2->stFindInfo.ftLastAccessTime.dwLowDateTime;
|
||||
u64File2.HighPart = lpFile2->stFindInfo.ftLastAccessTime.dwHighDateTime ;
|
||||
break;
|
||||
case TF_MODIFIEDDATE:
|
||||
/* concat the 32bit integers to a 64bit */
|
||||
u64File1.LowPart = lpFile1->ftLastWriteTime.dwLowDateTime;
|
||||
u64File1.HighPart = lpFile1->ftLastWriteTime.dwHighDateTime ;
|
||||
u64File2.LowPart = lpFile2->ftLastWriteTime.dwLowDateTime;
|
||||
u64File2.HighPart = lpFile2->ftLastWriteTime.dwHighDateTime ;
|
||||
u64File1.LowPart = lpFile1->stFindInfo.ftLastWriteTime.dwLowDateTime;
|
||||
u64File1.HighPart = lpFile1->stFindInfo.ftLastWriteTime.dwHighDateTime ;
|
||||
u64File2.LowPart = lpFile2->stFindInfo.ftLastWriteTime.dwLowDateTime;
|
||||
u64File2.HighPart = lpFile2->stFindInfo.ftLastWriteTime.dwHighDateTime ;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1240,12 +1277,12 @@ CompareFiles(LPWIN32_FIND_DATA lpFile1, /* [IN] A pointer to WIN32_FIND_DATA of
|
|||
* Sort files by the order criterias using quicksort method
|
||||
*/
|
||||
static VOID
|
||||
QsortFiles(LPWIN32_FIND_DATA ptrArray[], /* [IN/OUT] The array with file info pointers */
|
||||
QsortFiles(PDIRFINDINFO ptrArray[], /* [IN/OUT] The array with file info pointers */
|
||||
int i, /* [IN] The index of first item in array */
|
||||
int j, /* [IN] The index to last item in array */
|
||||
LPDIRSWITCHFLAGS lpFlags) /* [IN] The flags that we will use to sort */
|
||||
{
|
||||
LPWIN32_FIND_DATA lpTemp; /* A temporary pointer */
|
||||
PDIRFINDINFO lpTemp; /* A temporary pointer */
|
||||
BOOL Way;
|
||||
|
||||
if (i < j)
|
||||
|
@ -1289,8 +1326,9 @@ DirList(LPTSTR szPath, /* [IN] The path that dir starts */
|
|||
BOOL fPoint; /* If szPath is a file with extension fPoint will be True*/
|
||||
HANDLE hSearch; /* The handle of the search */
|
||||
HANDLE hRecSearch; /* The handle for searching recursivly */
|
||||
HANDLE hStreams; /* The handle for alternate streams */
|
||||
WIN32_FIND_DATA wfdFileInfo; /* The info of file that found */
|
||||
LPWIN32_FIND_DATA * ptrFileArray; /* An array of pointers with all the files */
|
||||
PDIRFINDINFO * ptrFileArray; /* An array of pointers with all the files */
|
||||
PDIRFINDLISTNODE ptrStartNode; /* The pointer to the first node */
|
||||
PDIRFINDLISTNODE ptrNextNode; /* A pointer used for relatives refernces */
|
||||
TCHAR szFullPath[MAX_PATH]; /* The full path that we are listing with trailing \ */
|
||||
|
@ -1301,6 +1339,9 @@ DirList(LPTSTR szPath, /* [IN] The path that dir starts */
|
|||
DWORD dwCountDirs; /* Counter for directories */
|
||||
ULONGLONG u64CountBytes; /* Counter for bytes */
|
||||
ULARGE_INTEGER u64Temp; /* A temporary counter */
|
||||
WIN32_FIND_STREAM_DATA wfsdStreamInfo;
|
||||
PDIRFINDSTREAMNODE * ptrCurNode; /* The pointer to the first stream */
|
||||
PDIRFINDSTREAMNODE ptrFreeNode; /* The pointer used during cleanup */
|
||||
|
||||
/* Initialize Variables */
|
||||
ptrStartNode = NULL;
|
||||
|
@ -1363,6 +1404,12 @@ DirList(LPTSTR szPath, /* [IN] The path that dir starts */
|
|||
while (ptrStartNode)
|
||||
{
|
||||
ptrNextNode = ptrStartNode->ptrNext;
|
||||
while (ptrStartNode->stInfo.ptrHead)
|
||||
{
|
||||
ptrFreeNode = ptrStartNode->stInfo.ptrHead;
|
||||
ptrStartNode->stInfo.ptrHead = ptrFreeNode->ptrNext;
|
||||
cmd_free(ptrFreeNode);
|
||||
}
|
||||
cmd_free(ptrStartNode);
|
||||
ptrStartNode = ptrNextNode;
|
||||
dwCount--;
|
||||
|
@ -1376,15 +1423,68 @@ DirList(LPTSTR szPath, /* [IN] The path that dir starts */
|
|||
if (ptrNextNode->ptrNext)
|
||||
{
|
||||
/* Copy the info of search at linked list */
|
||||
memcpy(&ptrNextNode->ptrNext->stFindInfo,
|
||||
memcpy(&ptrNextNode->ptrNext->stInfo.stFindInfo,
|
||||
&wfdFileInfo,
|
||||
sizeof(WIN32_FIND_DATA));
|
||||
|
||||
/* If lower case is selected do it here */
|
||||
if (lpFlags->bLowerCase)
|
||||
{
|
||||
_tcslwr(ptrNextNode->ptrNext->stFindInfo.cAlternateFileName);
|
||||
_tcslwr(ptrNextNode->ptrNext->stFindInfo.cFileName);
|
||||
_tcslwr(ptrNextNode->ptrNext->stInfo.stFindInfo.cAlternateFileName);
|
||||
_tcslwr(ptrNextNode->ptrNext->stInfo.stFindInfo.cFileName);
|
||||
}
|
||||
|
||||
/* No streams (yet?) */
|
||||
ptrNextNode->ptrNext->stInfo.ptrHead = NULL;
|
||||
|
||||
/* Alternate streams are only displayed with new long list */
|
||||
if (lpFlags->bNewLongList && lpFlags->bDataStreams)
|
||||
{
|
||||
/* Try to get stream information */
|
||||
hStreams = FindFirstStreamW(wfdFileInfo.cFileName, FindStreamInfoStandard, &wfsdStreamInfo, 0);
|
||||
if (hStreams != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
/* We totally ignore first stream. It contains data about ::$DATA */
|
||||
ptrCurNode = &ptrNextNode->ptrNext->stInfo.ptrHead;
|
||||
while (FindNextStreamW(hStreams, &wfsdStreamInfo))
|
||||
{
|
||||
*ptrCurNode = cmd_alloc(sizeof(DIRFINDSTREAMNODE));
|
||||
if (*ptrCurNode == NULL)
|
||||
{
|
||||
WARN("DEBUG: Cannot allocate memory for *ptrCurNode!\n");
|
||||
while (ptrStartNode)
|
||||
{
|
||||
ptrNextNode = ptrStartNode->ptrNext;
|
||||
while (ptrStartNode->stInfo.ptrHead)
|
||||
{
|
||||
ptrFreeNode = ptrStartNode->stInfo.ptrHead;
|
||||
ptrStartNode->stInfo.ptrHead = ptrFreeNode->ptrNext;
|
||||
cmd_free(ptrFreeNode);
|
||||
}
|
||||
cmd_free(ptrStartNode);
|
||||
ptrStartNode = ptrNextNode;
|
||||
dwCount--;
|
||||
}
|
||||
FindClose(hStreams);
|
||||
FindClose(hSearch);
|
||||
return 1;
|
||||
}
|
||||
|
||||
memcpy(&(*ptrCurNode)->stStreamInfo, &wfsdStreamInfo,
|
||||
sizeof(WIN32_FIND_STREAM_DATA));
|
||||
|
||||
/* If lower case is selected do it here */
|
||||
if (lpFlags->bLowerCase)
|
||||
{
|
||||
_tcslwr((*ptrCurNode)->stStreamInfo.cStreamName);
|
||||
}
|
||||
|
||||
ptrCurNode = &(*ptrCurNode)->ptrNext;
|
||||
}
|
||||
|
||||
FindClose(hStreams);
|
||||
*ptrCurNode = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Continue at next node at linked list */
|
||||
|
@ -1415,13 +1515,19 @@ DirList(LPTSTR szPath, /* [IN] The path that dir starts */
|
|||
ptrNextNode->ptrNext = NULL;
|
||||
|
||||
/* Calculate and allocate space need for making an array of pointers */
|
||||
ptrFileArray = cmd_alloc(sizeof(LPWIN32_FIND_DATA) * dwCount);
|
||||
ptrFileArray = cmd_alloc(sizeof(PDIRFINDINFO) * dwCount);
|
||||
if (ptrFileArray == NULL)
|
||||
{
|
||||
WARN("DEBUG: Cannot allocate memory for ptrFileArray!\n");
|
||||
while (ptrStartNode)
|
||||
{
|
||||
ptrNextNode = ptrStartNode->ptrNext;
|
||||
while (ptrStartNode->stInfo.ptrHead)
|
||||
{
|
||||
ptrFreeNode = ptrStartNode->stInfo.ptrHead;
|
||||
ptrStartNode->stInfo.ptrHead = ptrFreeNode->ptrNext;
|
||||
cmd_free(ptrFreeNode);
|
||||
}
|
||||
cmd_free(ptrStartNode);
|
||||
ptrStartNode = ptrNextNode;
|
||||
dwCount --;
|
||||
|
@ -1437,7 +1543,7 @@ DirList(LPTSTR szPath, /* [IN] The path that dir starts */
|
|||
dwCount = 0;
|
||||
while (ptrNextNode->ptrNext)
|
||||
{
|
||||
*(ptrFileArray + dwCount) = &ptrNextNode->ptrNext->stFindInfo;
|
||||
*(ptrFileArray + dwCount) = &ptrNextNode->ptrNext->stInfo;
|
||||
ptrNextNode = ptrNextNode->ptrNext;
|
||||
dwCount++;
|
||||
}
|
||||
|
@ -1467,6 +1573,12 @@ DirList(LPTSTR szPath, /* [IN] The path that dir starts */
|
|||
while (ptrStartNode)
|
||||
{
|
||||
ptrNextNode = ptrStartNode->ptrNext;
|
||||
while (ptrStartNode->stInfo.ptrHead)
|
||||
{
|
||||
ptrFreeNode = ptrStartNode->stInfo.ptrHead;
|
||||
ptrStartNode->stInfo.ptrHead = ptrFreeNode->ptrNext;
|
||||
cmd_free(ptrFreeNode);
|
||||
}
|
||||
cmd_free(ptrStartNode);
|
||||
ptrStartNode = ptrNextNode;
|
||||
dwCount --;
|
||||
|
@ -1543,6 +1655,7 @@ CommandDir(LPTSTR rest)
|
|||
/* Initialize Switch Flags < Default switches are setted here!> */
|
||||
stFlags.b4Digit = TRUE;
|
||||
stFlags.bBareFormat = FALSE;
|
||||
stFlags.bDataStreams = FALSE;
|
||||
stFlags.bLowerCase = FALSE;
|
||||
stFlags.bNewLongList = TRUE;
|
||||
stFlags.bPause = FALSE;
|
||||
|
@ -1620,6 +1733,7 @@ CommandDir(LPTSTR rest)
|
|||
TRACE(" Order Criteria [%i]: %i (Reversed: %i)\n",i, stFlags.stOrderBy.eCriteria[i], stFlags.stOrderBy.bCriteriaRev[i] );
|
||||
TRACE("(P) Pause : %i\n", stFlags.bPause );
|
||||
TRACE("(Q) Owner : %i\n", stFlags.bUser );
|
||||
TRACE("(R) Data stream : %i\n", stFlags.bDataStreams );
|
||||
TRACE("(S) Recursive : %i\n", stFlags.bRecursive );
|
||||
TRACE("(T) Time field : %i\n", stFlags.stTimeField.eTimeField );
|
||||
TRACE("(X) Short names : %i\n", stFlags.bShortName );
|
||||
|
|
|
@ -148,7 +148,7 @@ DELAY [/m]n\n\n\
|
|||
/m specifiy than n are milliseconds\n\
|
||||
otherwise n are seconds\n"
|
||||
STRING_DIR_HELP1 "DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]\n\n\
|
||||
[drive:][path][filename]\n\
|
||||
Specifies drive, directory, and/or files to list.\n\n\
|
||||
/A Displays files with specified attributes.\n\
|
||||
|
@ -167,6 +167,7 @@ DELAY [/m]n\n\n\
|
|||
G Group directories first - Prefix to reverse order\n\
|
||||
/P Pauses after each screenful of information.\n\
|
||||
/Q Display the owner of the file.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Displays files in specified directory and all subdirectories.\n\
|
||||
/T Controls which time field displayed or used for sorting\n\
|
||||
timefield C Creation\n\
|
||||
|
|
|
@ -142,7 +142,7 @@ DELAY [/m]n\n\n\
|
|||
/m Millisekunden, ansonsten Sekunden\n"
|
||||
STRING_DIR_HELP1 "Listet die Dateien und Unterverzeichnisse eines Verzeichnisses auf.\n\n\
|
||||
DIR [Laufwerk:][Pfad][Dateiname] [/A[[:]Attribute]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]Reihenfolge]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]Reihenfolge]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]\n\n\
|
||||
[Laufwerk:][path][Dateiname]\n\
|
||||
Bezeichnet Laufwerk, Verzeichnis und/oder Dateien.\n\n\
|
||||
/A Listet Dateien mit angegebenen Attributen auf.\n\
|
||||
|
@ -162,6 +162,7 @@ DIR [Laufwerk:][Pfad][Dateiname] [/A[[:]Attribute]] [/B] [/C] [/D] [/L] [/N]\n\
|
|||
G Verzeichnisse zuerst - vorangestellt kehrt die\n\
|
||||
/P Pausiert nach jeder vollen Bildschirmseite.\n\
|
||||
/Q Gibt den Besitzer der Datei aus.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Listet Dateien und alle Unterverzeichnisse auf.\n\
|
||||
/T Bestimmt welche Zeit verwendet wird.\n\
|
||||
timefield C Erstellung\n\
|
||||
|
|
|
@ -147,7 +147,7 @@ DELAY [/m]n\n\n\
|
|||
/m specifiy than n are milliseconds\n\
|
||||
otherwise n are seconds\n"
|
||||
STRING_DIR_HELP1 "DIR [δίσκος:][μονοπάτι][αρχείο] [/A[[:]χαρακτηριστικά]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]\n\n\
|
||||
[δίσκος:][μονοπάτι][αρχείο]\n\
|
||||
Καθορίζει μονάδα δίσκου, κατάλογο ή/και αρχεία που θα παρατεθούν σε λίστα.\n\n\
|
||||
/A Εμφανίζει αρχεία με τα καθορισμένα χαρακτηριστικά..\n\
|
||||
|
@ -166,6 +166,7 @@ DELAY [/m]n\n\n\
|
|||
G Πρώτα οι κατάλογοι ομάδων - Πρόθεμα για αντιστροφή της σειράς\n\
|
||||
/P Σταματάει όταν οι πληροφορίες γεμίσουν μία οθόνη.\n\
|
||||
/Q Εμφάνιση του ιδιοκτήτη του αρχείου.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Εμφανίζει τα αρχεία στον καθορισμένο κατάλογο και σε όλους τους υποκαταλόγους.\n\
|
||||
/T Ελέγχει ποιο πεδίο χρόνου θα εμφανιστεί ή θα χρησιμοποιηθεί για την ταξινόμηση\n\
|
||||
πεδίο χρόνου C Δημιουργία\n\
|
||||
|
|
|
@ -143,7 +143,7 @@ DELAY [/m]n\n\n\
|
|||
/m specifiy than n are milliseconds\n\
|
||||
otherwise n are seconds\n"
|
||||
STRING_DIR_HELP1 "DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]\n\n\
|
||||
[drive:][path][filename]\n\
|
||||
Specifies drive, directory, and/or files to list.\n\n\
|
||||
/A Displays files with specified attributes.\n\
|
||||
|
@ -162,6 +162,7 @@ DELAY [/m]n\n\n\
|
|||
G Group directories first - Prefix to reverse order\n\
|
||||
/P Pauses after each screenful of information.\n\
|
||||
/Q Display the owner of the file.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Displays files in specified directory and all subdirectories.\n\
|
||||
/T Controls which time field displayed or used for sorting\n\
|
||||
timefield C Creation\n\
|
||||
|
|
|
@ -145,7 +145,7 @@ DELAY [/m]n\n\n\
|
|||
/m Especifica que n son milisegundos\n\
|
||||
En otro caso n son segundos\n"
|
||||
STRING_DIR_HELP1 "DIR [unidad:][ruta][nombre de archivo] [/A[[:]atributos]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]orden]] [/P] [/Q] [/S] [/T[[:]fecha]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]orden]] [/P] [/Q] [/R] [/S] [/T[[:]fecha]] [/W] [/X] [/4]\n\n\
|
||||
[unidad:][ruta][nombre de archivo]\n\
|
||||
Especifica la unidad, el directorio o los archivos a listar.\n\n\
|
||||
/A Muestra los archivos con los atributos especificados.\n\
|
||||
|
@ -165,6 +165,7 @@ DELAY [/m]n\n\n\
|
|||
G Los directorios primero - Prefijo para el orden inverso\n\
|
||||
/P Pausa después de cada pantalla llena de información.\n\
|
||||
/Q Muestra el propietario del archivo.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Muestra los archivos en el directorio especificado y sus subdirectorios.\n\
|
||||
/T Controla que campo de tiempo se muestra o es usado para ordenar:\n\
|
||||
campo de tiempo C Creación\n\
|
||||
|
|
|
@ -151,7 +151,7 @@ DELAY [/m]n\n\n\
|
|||
/m spécifie que n est en millisecondes\n\
|
||||
sinon n est en secondes"
|
||||
STRING_DIR_HELP1 "DIR [lecteur:][chemin][fichier] [/A[[:]attributs]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]ordredetri]] [/P] [/Q] [/S] [/T[[:]heure]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]ordredetri]] [/P] [/Q] [/R] [/S] [/T[[:]heure]] [/W] [/X] [/4]\n\n\
|
||||
[lecteur:][chemin][fichier]\n\
|
||||
Spécifie le disque, le répertoire, et/ou les fichiers à lister.\n\n\
|
||||
/A Affiche les fichiers avec les attributs indiqués.\n\
|
||||
|
@ -173,6 +173,7 @@ DELAY [/m]n\n\n\
|
|||
G Répertoires d'abord - Préfixe pour inverser l'ordre\n\
|
||||
/P S'arrête après chaque page d'information.\n\
|
||||
/Q Affiche le propriétaire du fichier.\n\
|
||||
/R Affiche les flux de données alternatifs du fichier.\n\
|
||||
/S Affiche les fichiers dans le répertoire indiqué et\n\
|
||||
tous les sous-répertoires.\n\
|
||||
/T Contrôle quel champ de temps sera affiché ou utilisé\n\
|
||||
|
|
|
@ -136,7 +136,7 @@ DELAY [/m]n\n\n\
|
|||
/m specifiy than n are milliseconds\n\
|
||||
otherwise n are seconds\n"
|
||||
STRING_DIR_HELP1 "DIR [meghajtó:][elérési_út][állománynév] [/A[[:]attribútumok]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]rendezési_feltétel]] [/P] [/Q] [/S] [/T[[:]idõ]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]rendezési_feltétel]] [/P] [/Q] [/R] [/S] [/T[[:]idõ]] [/W] [/X] [/4]\n\n\
|
||||
[meghajtó:][elérési_út][állományname]\n\
|
||||
Az adott hely állományait és mappáit jeleníti meg.\n\n\
|
||||
/A A megadott attribútumu állományokat jeleníti csak meg.\n\
|
||||
|
@ -154,6 +154,7 @@ DELAY [/m]n\n\n\
|
|||
G Mappák legelõl - ""Nem"" prefixel fordított rendezés\n\
|
||||
/P Csak egy képernyõnyi adat megjelenítése egyszerre.\n\
|
||||
/Q Állomány tulajdonsosának megjelenítése.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Almappák tartalmát is megjeleníti.\n\
|
||||
/T Controls which time field displayed or used for sorting\n\
|
||||
timefield C Létrehozás\n\
|
||||
|
|
|
@ -145,7 +145,7 @@ DELAY [/m]n\n\n\
|
|||
/m menetapkan bahwa n adalah milidetik\n\
|
||||
sebaliknya n adalah detik\n"
|
||||
STRING_DIR_HELP1 "DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]\n\n\
|
||||
[drive:][path][filename]\n\
|
||||
Menetapkan drive, direktori, dan/atau files ke daftar.\n\n\
|
||||
/A Menampilkan file dengan atribut yang ditetapkan.\n\
|
||||
|
@ -164,6 +164,7 @@ DELAY [/m]n\n\n\
|
|||
G Grup direktori pertama - Prefiks untuk membalik urutan\n\
|
||||
/P Menunda setelah setiap layar penuh informasi.\n\
|
||||
/Q Menampilkan pemilik file.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Menampilkan file dalam direktori dan semua subdirektorinya.\n\
|
||||
/T Mengontrol field waktu mana atau dipakai untuk mengurut\n\
|
||||
timefield C Pembuatan\n\
|
||||
|
|
|
@ -143,7 +143,7 @@ DELAY [/m]n\n\n\
|
|||
/m precisa che n è in millisecondi\n\
|
||||
altrimenti n è in secondi\n"
|
||||
STRING_DIR_HELP1 "DIR [disco:][percorso][nomefilen] [/A[[:]attributi]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]orderinamento]] [/P] [/Q] [/S] [/T[[:]tempo]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]orderinamento]] [/P] [/Q] [/R] [/S] [/T[[:]tempo]] [/W] [/X] [/4]\n\n\
|
||||
[disco:][percorso][nomefilen]\n\
|
||||
Indica disco, percorso e/o file da elencare.\n\n\
|
||||
/A Visualizza i file con gli attributi indicati.\n\
|
||||
|
@ -162,6 +162,7 @@ DELAY [/m]n\n\n\
|
|||
G Le cartelle per prime - Prefisso per invertire l'ordine\n\
|
||||
/P Pasa dopo ogni schermata piena.\n\
|
||||
/Q Visualizza il proprietario del file.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Visualizza i file nella cartella indicata e nelle sottocartelle.\n\
|
||||
/T Sceglie quale campo di tempo è usato per gli ordinamenti.\n\
|
||||
timefield C Creazione\n\
|
||||
|
|
|
@ -148,7 +148,7 @@ DELAY [/m]n\n\n\
|
|||
指定しない場合、単位には秒が使われます。\n"
|
||||
STRING_DIR_HELP1 "ディレクトリ中のファイルとサブディレクトリを一覧表示します。\n\n\
|
||||
DIR [ドライブ:][パス][ファイル名] [/A[[:]属性]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]ソート順]] [/P] [/Q] [/S] [/T[[:]タイムフィールド]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]ソート順]] [/P] [/Q] [/R] [/S] [/T[[:]タイムフィールド]] [/W] [/X] [/4]\n\n\
|
||||
[ドライブ:][パス][ファイル名]\n\
|
||||
一覧表示するドライブ、ディレクトリ、またはファイルを指定します。\n\
|
||||
/A 指定された属性のファイルを表示します。\n\
|
||||
|
@ -167,6 +167,7 @@ DIR [ドライブ:][パス][ファイル名] [/A[[:]属性]] [/B] [/C] [/D] [/L]
|
|||
G グループ (ディレクトリから) - 降順\n\
|
||||
/P 1 画面ごとに停止して表示します。\n\
|
||||
/Q ファイルの所有者を表示します。\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S 指定されたディレクトリおよびそのサブディレクトリのすべての\n\
|
||||
ファイルを表示します。\n\
|
||||
/T どのタイムフィールドを表示するか、または並べ替えに使用するかを\n\
|
||||
|
|
|
@ -143,7 +143,7 @@ DELAY [/m]n\n\n\
|
|||
/m spesifiserer at n er mikrosekunder\n\
|
||||
ellers er n sekunder\n"
|
||||
STRING_DIR_HELP1 "DIR [stasjon:][mappe][filnavn] [/A[[:]attributter]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]sortering]] [/P] [/Q] [/S] [/T[[:]tidsfelt]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]sortering]] [/P] [/Q] [/R] [/S] [/T[[:]tidsfelt]] [/W] [/X] [/4]\n\n\
|
||||
[stasjon:][mappe][filnavn]\n\
|
||||
Spesifisere stasjon, mappe, og/eller filer som skal listes.\n\n\
|
||||
/A Vis filer ved å spesifisere attributter.\n\
|
||||
|
@ -162,6 +162,7 @@ DELAY [/m]n\n\n\
|
|||
G Gruppere mapper først - Prefiks for å reversere orden\n\
|
||||
/P Pause etter hvert hele skjermbilde.\n\
|
||||
/Q Viser hvem som eier filen.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Viser alle filer i angitt mappe og alle undermapper.\n\
|
||||
/T Styrer hvilket tidsfelt som vises eller blir brukt for sortering\n\
|
||||
timefelt C Opprettet \n\
|
||||
|
|
|
@ -151,7 +151,7 @@ DELAY [/m]n\n\n\
|
|||
/m wymusza traktowanie n jako milisekund,\n\
|
||||
w innym wypadku będzie traktowane jako sekundy\n"
|
||||
STRING_DIR_HELP1 "DIR [napęd:][ścieżka][pliki] [/A[[:]atrybuty]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]porządek]] [/P] [/Q] [/S] [/T[[:]czas]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]porządek]] [/P] [/Q] [/R] [/S] [/T[[:]czas]] [/W] [/X] [/4]\n\n\
|
||||
[napęd:][ścieżka][nazwa_pliku]\n\
|
||||
Wyznacza literę napędu, katalog, i/lub pliki do wyświetlenia.\n\n\
|
||||
/A Wyświetla pliki o określonych atrybutach.\n\
|
||||
|
@ -170,6 +170,7 @@ DELAY [/m]n\n\n\
|
|||
G Wyświetla najpierw katalogi - Odwraca kolejność\n\
|
||||
/P Pauza po każdym pełnym ekranie.\n\
|
||||
/Q Wyświetla właściciela plików\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Wyświetla pliki w danym katalogu i wszystkich podkatalogach.\n\
|
||||
/T Pole czasu, odpowiedzialne za wyświetlanie/sortowanie \n\
|
||||
czas C Utworzenia\n\
|
||||
|
|
|
@ -160,7 +160,7 @@ DELAY [/m]n\n\n\
|
|||
/m Specifică faptul că «n» sunt milisecunde\n\
|
||||
altfel «n» sunt considerate secunde.\n"
|
||||
STRING_DIR_HELP1 "DIR [unitate:][cale][fișier] [/A[[:]atribute]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]ordonare]] [/P] [/Q] [/S] [/T[[:]timp]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]ordonare]] [/P] [/Q] [/R] [/S] [/T[[:]timp]] [/W] [/X] [/4]\n\n\
|
||||
[unitate:][cale][fișier]\n\
|
||||
Specifică unitatea, directorul și/sau fișierele de enumerat.\n\n\
|
||||
/A Afișează fișierele după atributele specificate.\n\
|
||||
|
@ -182,6 +182,7 @@ DELAY [/m]n\n\n\
|
|||
- Prefix pentru inversarea ordinii\n\
|
||||
/P Pauză după un ecran de informații.\n\
|
||||
/Q Afișează posesorul fișierului.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Afișează fișierele din directorul specificat și\n\
|
||||
din toate subdirectoarele sale.\n\
|
||||
/T Determină care timp este afișat sau folosit la ordonare\n\
|
||||
|
|
|
@ -146,7 +146,7 @@ DELAY [/m]n\n\n\
|
|||
/m указывает, что n означает количество миллисекунд\n\
|
||||
иначе n означает количество секунд\n"
|
||||
STRING_DIR_HELP1 "DIR [диск:][путь][имя_файла] [/A[[:]атрибуты]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]сортировка]] [/P] [/Q] [/S] [/T[[:]время]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]сортировка]] [/P] [/Q] [/R] [/S] [/T[[:]время]] [/W] [/X] [/4]\n\n\
|
||||
[диск:][путь][имя_файла]\n\
|
||||
Диск, каталог и/или файлы, которые следует включить в список.\n\n\
|
||||
/A Вывод файлов с указанными атрибутами.\n\
|
||||
|
@ -165,6 +165,7 @@ DELAY [/m]n\n\n\
|
|||
G Начать список с каталогов Префикс ""-"" обращает порядок\n\
|
||||
/P Пауза после заполнения каждого экрана.\n\
|
||||
/Q Вывод сведений о владельце файла.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Вывод списка файлов из указанного каталога и его подкаталогов.\n\
|
||||
/T Выбор поля времени для отображения и сортировки\n\
|
||||
время C Создание\n\
|
||||
|
|
|
@ -149,7 +149,7 @@ DELAY [/m]n\n\n\
|
|||
/m specifiy than n are milliseconds\n\
|
||||
otherwise n are seconds\n"
|
||||
STRING_DIR_HELP1 "DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4]\n\n\
|
||||
[drive:][path][filename]\n\
|
||||
Specifies drive, directory, and/or files to list.\n\n\
|
||||
/A Displays files with specified attributes.\n\
|
||||
|
@ -168,6 +168,7 @@ DELAY [/m]n\n\n\
|
|||
G Group directories first - Prefix to reverse order\n\
|
||||
/P Pauses after each screenful of information.\n\
|
||||
/Q Display the owner of the file.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Displays files in specified directory and all subdirectories.\n\
|
||||
/T Controls which time field displayed or used for sorting\n\
|
||||
timefield C Creation\n\
|
||||
|
|
|
@ -147,7 +147,7 @@ DELAY [/m]n\n\n\
|
|||
/m specifikoni se n janë millisekonda\n\
|
||||
ndryshe n janë sekonda\n"
|
||||
STRING_DIR_HELP1 "DIR [drive:][rrugë][emer] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]radhitje]] [/P] [/Q] [/S] [/T[[:]koha]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]radhitje]] [/P] [/Q] [/R] [/S] [/T[[:]koha]] [/W] [/X] [/4]\n\n\
|
||||
[drive:][rrugë][emer]\n\
|
||||
Përcakton, Drejtorin, dhe / ose dokumentin në listë.\n\n\
|
||||
/A Shfaq dokumentat me atributet e specifikuara.\n\
|
||||
|
@ -166,6 +166,7 @@ DELAY [/m]n\n\n\
|
|||
G Grupi skedave se pari - Parashtese të kthejë renditjen\n\
|
||||
/P Pauzo pas çdo informacioni në ekran.\n\
|
||||
/Q Shfaq zotëruesin e dosjes.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Shfaq dokumentet në skedën e specifikuar dhe të gjitha nën-skedat.\n\
|
||||
/T Kontrollon secilen fushë kohohore e shfaqura ose e përdorur për klasifikimin\n\
|
||||
timefield C Krijim\n\
|
||||
|
|
|
@ -143,7 +143,7 @@ DELAY [/m]n\n\n\
|
|||
/m anger at n är mikrosekunder\n\
|
||||
annars är n sekunder\n"
|
||||
STRING_DIR_HELP1 "DIR [enhet:][mapp][filnamn] [/A[[:]attribut]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]sortering]] [/P] [/Q] [/S] [/T[[:]tidsfält]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]sortering]] [/P] [/Q] [/R] [/S] [/T[[:]tidsfält]] [/W] [/X] [/4]\n\n\
|
||||
[enhet:][mapp][filnamn]\n\
|
||||
Anger enhet, mapp, och/eller filer som skall listes.\n\n\
|
||||
/A Vis filer ved att ange attributter.\n\
|
||||
|
@ -162,6 +162,7 @@ DELAY [/m]n\n\n\
|
|||
G Gruppera mappar först - Prefix för omvänd ordning\n\
|
||||
/P Pausa efter varje hel skärmbild.\n\
|
||||
/Q Viser vem som äger filen.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Viser alla filer i angiven mapp och alla undermappar.\n\
|
||||
/T Kontrollerar vilket tidsfält som visas eller blir använt för sortering\n\
|
||||
timefelt C Skapelse \n\
|
||||
|
|
|
@ -146,7 +146,7 @@ DELAY [/m]n\n\n\
|
|||
/m n milisâniye olarak belirtir\n\
|
||||
yoksa n sâniyedir\n"
|
||||
STRING_DIR_HELP1 "DIR [sürücü:][yol][kütük adı] [/A[[:]öz nitelikler]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]dizme düzeni]] [/P] [/Q] [/S] [/T[[:]zaman aralığı]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]dizme düzeni]] [/P] [/Q] [/R] [/S] [/T[[:]zaman aralığı]] [/W] [/X] [/4]\n\n\
|
||||
[sürücü:][yol][kütük adı]\n\
|
||||
Dizelgelenecek sürücü, dizin veyâ kütükleri belirtir.\n\n\
|
||||
/A Belirtilen öz nitelikli kütükleri görüntüler.\n\
|
||||
|
@ -166,6 +166,7 @@ DELAY [/m]n\n\n\
|
|||
G Önce dizinleri öbekle - Ters dizme için ön ek\n\
|
||||
/P Bir bilgi görüntülüğünden sonra duraklatır.\n\
|
||||
/Q Kütüğün iyesini göster.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Belirtilen dizindeki ve tüm alt dizinlerdeki kütükleri\n\
|
||||
görüntüler.\n\
|
||||
/T Dizme için hangi zaman aralığının görüntüleneceğini ya da\n\
|
||||
|
|
|
@ -154,7 +154,7 @@ DELAY [/m]n\n\n\
|
|||
/m вказує, що n це мiлiсекунди\n\
|
||||
iнакше n це кiлькiсть секунд\n"
|
||||
STRING_DIR_HELP1 "DIR [диск:][шлях][iм'я_файлу] [/A[[:]атрибути]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]порядок]] [/P] [/Q] [/S] [/T[[:]час]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]порядок]] [/P] [/Q] [/R] [/S] [/T[[:]час]] [/W] [/X] [/4]\n\n\
|
||||
[диск:][шлях][iм'я_файлу]\n\
|
||||
Визначає диск, директорію, та/чи файли для їх виведення в списку.\n\n\
|
||||
/A Вiдображення файлiв з вказаними атрибутами.\n\
|
||||
|
@ -173,6 +173,7 @@ DELAY [/m]n\n\n\
|
|||
G Почати список з каталогiв Префiкс ""-"" для зворотнього порядку\n\
|
||||
/P Пауза пiсля кожного заповнення екрану.\n\
|
||||
/Q Вiдображення даних про власника файлу.\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S Вiдображення файлiв з вказаного каталогу та всiх пiдкаталогiв.\n\
|
||||
/T Вибiр поля часу для вiдображення чи сортування\n\
|
||||
час C Створення\n\
|
||||
|
|
|
@ -138,7 +138,7 @@ ERASE [/N /P /T /Q /S /W /Y /Z /A[[:]属性]] 文件 ...\n\n\
|
|||
DELAY [/m]n\n\n\
|
||||
/m 指定 n 的单位使用毫秒,否则为秒。\n"
|
||||
STRING_DIR_HELP1 "DIR [驱动器:][路径][文件名] [/A[[:]属性]] [/B] [/C] [/D] [/L] [/N]\n\
|
||||
[/O[[:]排序顺序]] [/P] [/Q] [/S] [/T[[:]时间字段]] [/W] [/X] [/4]\n\n\
|
||||
[/O[[:]排序顺序]] [/P] [/Q] [/R] [/S] [/T[[:]时间字段]] [/W] [/X] [/4]\n\n\
|
||||
[驱动器:][路径][文件名]\n\
|
||||
指定要列表显示的驱动器、目录和/或文件。\n\n\
|
||||
/A 显示具有指定属性的文件。\n\
|
||||
|
@ -156,6 +156,7 @@ DELAY [/m]n\n\n\
|
|||
G 分组目录在前 - 反转顺序的前缀\n\
|
||||
/P 在每屏幕信息输出后停顿。\n\
|
||||
/Q 显示文件的所有者。\n\
|
||||
/R Displays alternate data streams of the files.\n\
|
||||
/S 显示指定目录和所有子目录中的文件。\n\
|
||||
/T 控制要显示或者用于排序的时间字段。\n\
|
||||
时间字段 C 创建时间\n\
|
||||
|
|
Loading…
Reference in a new issue