FILES: Difference between revisions
Jump to navigation
Jump to search
Code by Ted Weissgerber
Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link
No edit summary |
No edit summary |
||
Line 10: | Line 10: | ||
* {{Parameter|fileSpec$}} can use the * and ? wildcard specifications: | * {{Parameter|fileSpec$}} can use the * and ? wildcard specifications: | ||
** '''*''' denotes one or more wildcard characters in a filename or path specification as any legal file name character(s). | ** '''*''' denotes one or more wildcard characters in a filename or path specification as any legal file name character(s). | ||
** '''?''' denotes one wildcard letter in a filename or path specification as any legal filename character. | ** '''?''' denotes one wildcard letter in a filename or path specification as any legal filename character. | ||
* If {{Parameter|fileSpec$}} is omitted, it is assumed to be '''"*.*"''' (all files and folders in the current directory). | * If {{Parameter|fileSpec$}} is omitted, it is assumed to be '''"*.*"''' (all files and folders in the current directory). | ||
* Illegal filename characters in '''QB64''' include * > < : " | \ / with any amount of dot extensions being allowed in Windows. | * Illegal filename characters in '''QB64''' include * > < : " | \ / with any amount of dot extensions being allowed in Windows. | ||
Line 21: | Line 21: | ||
{{PageExamples}} | {{PageExamples}} | ||
''Example 1:'' Finding a list of all BAS files in the current folder. | ''Example 1:'' Finding a list of all BAS files in the current folder. | ||
{{CodeStart}}{{Cl|FILES}} "*.BAS" | {{CodeStart}}{{Cl|FILES}} "*.BAS" | ||
{{CodeEnd}} | {{CodeEnd}} | ||
Line 28: | Line 28: | ||
==Alternative file list solutions== | ==Alternative file list solutions== | ||
''Alternative 1:'' The DIR$ function adapted from PDS (7.1) returns a filename or a list when more than one exist. The file spec can use a path and/or wildcards. | ''Alternative 1:'' The DIR$ function adapted from PDS (7.1) returns a filename or a list when more than one exist. The file spec can use a path and/or wildcards. | ||
{{CodeStart}} | {{CodeStart}} | ||
{{Cl|FOR...NEXT|FOR}} i = 1 {{Cl|TO}} 2 | {{Cl|FOR...NEXT|FOR}} i = 1 {{Cl|TO}} 2 | ||
{{Cl|PRINT}} | {{Cl|PRINT}} | ||
Line 68: | Line 68: | ||
{{Cl|END IF}} | {{Cl|END IF}} | ||
DIR$ = DirList$(Index%) | DIR$ = DirList$(Index%) | ||
{{Cl|END FUNCTION}} | {{Cl|END FUNCTION}} | ||
{{CodeEnd}} | {{CodeEnd}} | ||
{{small|Code by Ted Weissgerber}} | {{small|Code by Ted Weissgerber}} |
Revision as of 01:38, 23 January 2023
The FILES statement is used to print a list of files in the current directory using a file specification.
Syntax
- FILES [fileSpec$]
Description
- fileSpec$ is a string expression or variable containing a path when required.
- fileSpec$ can use the * and ? wildcard specifications:
- * denotes one or more wildcard characters in a filename or path specification as any legal file name character(s).
- ? denotes one wildcard letter in a filename or path specification as any legal filename character.
- If fileSpec$ is omitted, it is assumed to be "*.*" (all files and folders in the current directory).
- Illegal filename characters in QB64 include * > < : " | \ / with any amount of dot extensions being allowed in Windows.
- FILES lists can make the screen roll up. Try using SHELL "DIR" with the /P option. DIR command.
QBasic/QuickBASIC
- Illegal filename characters in QBasic included * ? , > < ; : " | \ / + [ ] and more than one dot extension in DOS.
Examples
Example 1: Finding a list of all BAS files in the current folder.
FILES "*.BAS" |
Alternative file list solutions
Alternative 1: The DIR$ function adapted from PDS (7.1) returns a filename or a list when more than one exist. The file spec can use a path and/or wildcards.
FOR i = 1 TO 2 PRINT LINE INPUT "Enter a file spec: ", spec$ file$ = DIR$(spec$) 'use a file spec ONCE to find the last file name listed PRINT DIRCount%, file$, 'function can return the file count using SHARED variable IF DIRCount% > 1 THEN DO K$ = INPUT$(1) file$ = DIR$("") 'use an empty string parameter to return a list of files! PRINT file$, LOOP UNTIL LEN(file$) = 0 'file list ends with an empty string END IF NEXT END FUNCTION DIR$ (spec$) CONST TmpFile$ = "DIR$INF0.INF", ListMAX% = 500 'change maximum to suit your needs SHARED DIRCount% 'returns file count if desired STATIC Ready%, Index%, DirList$() IF NOT Ready% THEN REDIM DirList$(ListMAX%): Ready% = -1 'DIM array first use IF spec$ > "" THEN 'get file names when a spec is given SHELL _HIDE "DIR " + spec$ + " /b > " + TmpFile$ Index% = 0: DirList$(Index%) = "": ff% = FREEFILE OPEN TmpFile$ FOR APPEND AS #ff% size& = LOF(ff%) CLOSE #ff% IF size& = 0 THEN KILL TmpFile$: EXIT FUNCTION OPEN TmpFile$ FOR INPUT AS #ff% DO WHILE NOT EOF(ff%) AND Index% < ListMAX% Index% = Index% + 1 LINE INPUT #ff%, DirList$(Index%) LOOP DIRCount% = Index% 'SHARED variable can return the file count CLOSE #ff% KILL TmpFile$ ELSE IF Index% > 0 THEN Index% = Index% - 1 'no spec sends next file name END IF DIR$ = DirList$(Index%) END FUNCTION |
- Explanation: The function will verify that a file exists (even if it is empty) by returning its name, or it returns an empty string if no file exists. It can return a list of file names by using an empty string parameter("") after sending a wildcard spec to get the first file name. The number of file names found is returned by using the SHARED variable, DIRCount%. Unlike the PDS DIR$ function, it must use an empty string parameter as QB64 doesn't support optional parameters. The function does not delete empty files.
Alternative 2:
- The member-contributed FILELIST$ function uses the mouse and does not affect your program screens. It can verify that a file name exists or display a list of long and short file names to choose from. It also avoids program errors when a file name does not exist.
See also
- SHELL, SCREEN (function) (See Example 3)
- CHDIR, MKDIR
- RMDIR, KILL
- _CWD$, _STARTDIR$
- _FILEEXISTS, _DIREXISTS
- Windows File Exist Library
- Windows Open and Save Dialog Boxes
- $CONSOLE