|
|
(One intermediate revision by one other user not shown) |
Line 14: |
Line 14: |
| * 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. |
| * FILES lists can make the screen roll up. Try using SHELL "DIR" with the /P option. [http://www.computerhope.com/dirhlp.htm DIR command]. | | * FILES lists can make the screen roll up. Try using SHELL "DIR" with the /P option. [http://www.computerhope.com/dirhlp.htm DIR command]. |
| | | * To get individual directory entries use [[_FILES$]] instead. |
| === QBasic/QuickBASIC ===
| |
| * Illegal filename characters in QBasic included '''* ? , > < ; : " | \ / + [ ]''' and more than one dot extension in [http://www.computerhope.com/issues/ch000209.htm DOS]. | |
|
| |
|
|
| |
|
| {{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}} |
|
| |
|
| |
| == 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.
| |
| {{CodeStart}}
| |
| {{Cl|FOR...NEXT|FOR}} i = 1 {{Cl|TO}} 2
| |
| {{Cl|PRINT}}
| |
| {{Cl|LINE INPUT}} "Enter a file spec: ", spec$
| |
| file$ = DIR$(spec$) 'use a file spec ONCE to find the last file name listed
| |
| {{Cl|PRINT}} DIRCount%, file$, 'function can return the file count using {{Cl|SHARED}} variable
| |
| {{Cl|IF...THEN|IF}} DIRCount% > 1 {{Cl|THEN}}
| |
| DO
| |
| K$ = {{Cl|INPUT$}}(1)
| |
| file$ = DIR$("") 'use an empty string parameter to return a list of files!
| |
| {{Cl|PRINT}} file$,
| |
| {{Cl|LOOP}} {{Cl|UNTIL}} {{Cl|LEN}}(file$) = 0 'file list ends with an empty string
| |
| {{Cl|END IF}}
| |
| {{Cl|NEXT}}
| |
|
| |
| {{Cl|END}}
| |
|
| |
| {{Cl|FUNCTION}} DIR$ (spec$)
| |
| {{Cl|CONST}} TmpFile$ = "DIR$INF0.INF", ListMAX% = 500 'change maximum to suit your needs
| |
| {{Cl|SHARED}} DIRCount% 'returns file count if desired
| |
| {{Cl|STATIC}} Ready%, Index%, DirList$()
| |
| {{Cl|IF...THEN|IF}} {{Cl|NOT}} Ready% {{Cl|THEN}} {{Cl|REDIM}} DirList$(ListMAX%): Ready% = -1 '{{Cl|DIM}} array first use
| |
| {{Cl|IF...THEN|IF}} spec$ > "" {{Cl|THEN}} 'get file names when a spec is given
| |
| {{Cl|SHELL}} {{Cl|_HIDE}} "DIR " + spec$ + " /b > " + TmpFile$
| |
| Index% = 0: DirList$(Index%) = "": ff% = {{Cl|FREEFILE}}
| |
| {{Cl|OPEN}} TmpFile$ {{Cl|FOR...NEXT|FOR}} {{Cl|APPEND}} {{Cl|AS}} #ff%
| |
| size& = {{Cl|LOF}}(ff%)
| |
| {{Cl|CLOSE}} #ff%
| |
| {{Cl|IF...THEN|IF}} size& = 0 {{Cl|THEN}} {{Cl|KILL}} TmpFile$: {{Cl|EXIT FUNCTION}}
| |
| {{Cl|OPEN}} TmpFile$ {{Cl|FOR (file statement)|FOR}} {{Cl|INPUT (file mode)|INPUT}} {{Cl|AS}} #ff%
| |
| {{Cl|DO...LOOP|DO}} {{Cl|WHILE}} {{Cl|NOT}} {{Cl|EOF}}(ff%) {{Cl|AND (boolean)|AND}} Index% < ListMAX%
| |
| Index% = Index% + 1
| |
| {{Cl|LINE INPUT (file statement)|LINE INPUT}} #ff%, DirList$(Index%)
| |
| {{Cl|LOOP}}
| |
| DIRCount% = Index% '{{Cl|SHARED}} variable can return the file count
| |
| {{Cl|CLOSE}} #ff%
| |
| {{Cl|KILL}} TmpFile$
| |
| {{Cl|ELSE}} {{Cl|IF...THEN|IF}} Index% > 0 {{Cl|THEN}} Index% = Index% - 1 'no spec sends next file name
| |
| {{Cl|END IF}}
| |
| DIR$ = DirList$(Index%)
| |
| {{Cl|END FUNCTION}}
| |
| {{CodeEnd}}
| |
| {{small|Code by Ted Weissgerber}}
| |
| :''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.
| |
|
| |
|
|
| |
|
| {{PageSeeAlso}} | | {{PageSeeAlso}} |
| * [[SHELL]], [[SCREEN (function)]] {{text|(See Example 3)}} | | * [[_FILES$]] |
| | * [[SHELL]] |
| * [[CHDIR]], [[MKDIR]] | | * [[CHDIR]], [[MKDIR]] |
| * [[RMDIR]], [[KILL]] | | * [[RMDIR]], [[KILL]] |
| * [[_CWD$]], [[_STARTDIR$]] | | * [[_CWD$]], [[_STARTDIR$]] |
| * [[_FILEEXISTS]], [[_DIREXISTS]] | | * [[_FILEEXISTS]], [[_DIREXISTS]] |
| * [[Windows Libraries#File_Exist|Windows File Exist Library]]
| |
| * [[Windows Libraries#File_Open_and_Save_Dialog|Windows Open and Save Dialog Boxes]]
| |
| * [[$CONSOLE]] | | * [[$CONSOLE]] |
|
| |
|
|
| |
|
| {{PageNavigation}} | | {{PageNavigation}} |
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.
- To get individual directory entries use _FILES$ instead.
Examples
- Example 1: Finding a list of all BAS files in the current folder.
See also
Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link