然后我遇到了在路径中创建子目录的问题,所以我写了这个:
DECLARE DYNAMIC LIBRARY "kernel32"
FUNCTION CreateDirectoryA% (F$, BYVAL X&&)
FUNCTION GetLastError& ()
END DECLARE
DO ' get directory
PRINT "Dir";: INPUT Directory$
IF Directory$ = "" THEN END
GOSUB CreateDir
LOOP
END
CreateDir:
' construct path
Directory$ = RTRIM$(Directory$)
IF RIGHT$(Directory$, 1) <> "\" THEN
Directory$ = Directory$ + "\"
END IF
' create path
x = 0
Next.Dir = INSTR(Directory$, "\")
DO
IF Next.Dir = False THEN
EXIT DO
END IF
SubDir$ = LEFT$(Directory$, Next.Dir - 1) ' \tempx\t1\t2\t3\
Next.Dir = INSTR(Next.Dir + 1, Directory$, "\")
' make directory name
IF LEN(SubDir$) THEN
' create directory
f$ = SubDir$ + CHR$(0)
x = CreateDirectoryA(f$, 0)
' check error
IF x = 0 THEN
IF GetLastError& = &HB7 THEN ' ignore already exists
' nul
ELSE
EXIT DO
END IF
END IF
END IF
LOOP
IF x = 0 THEN
PRINT "Error x"; HEX$(GetLastError&)
ELSE
PRINT "Directory created."
END IF
RETURN
这样,如果您指定一个不存在的路径,它将创建整个路径名。例如,如果 \Temp 不存在,则为 \Temp\t1\t2\t3。