Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
#DEFINEFUNCTION validate_File_Name(File,Code) ; Quick File Validation UDF v1.0. ; Steffen Fraas 20010417 sfraas@zoo.co.uk ; This UDF can be used to validate a DOS or Windows file name. ; File - File name ; code 1 - dos file name convention 8.3 ; File name check using abcdefghijklmnopqrstuvwxyz0123456789_^$~!%%&#-{}()@'` as per MS-DOS reference manual. ; Directory extension not supported ; ; code 0 - Windows Long file name convention ; File name check for a maximum lenght of 215 characters ; All characters 01-255 (01h to ffh) except \/:*?"<>| are valid in long filenames ; ; Return 1 - good filename ; Return 0 - bad filename Alph="abcdefghijklmnopqrstuvwxyz0123456789_^$~!%%&#-{}()@'`" ; Dos valid file name characters. Badfile=0 ; Bad file name return code. Goodfile=1 ; Good file name. File=StrLower(File) ; Work in lower case. IF Code ; Dos file name ? IF StrLen(File)>12 THEN RETURN Badfile ; Invalid DOS file name length. X=StrScan(File,".",1,@Fwdscan) ; Check extension. IF X ; Extension used? IF StrLen(File)-X>3 || StrLen(File)-X<1 || !validate_Dir(Alph,StrSub(File,X+1,StrLen(File)-X),Code) THEN RETURN Badfile ; Bad Dos extension. File=StrSub(File,1,X-1) ; Root file name. ENDIF IF StrLen(File)>0 && StrLen(File)<9 && validate_Dir(Alph,File,Code) THEN RETURN Goodfile ; Good Dos filename. ELSE RETURN Badfile ; Invalid DOS filename. ELSE ; Check out long filename. X =StrCat(Num2Char(001),Num2Char(002),Num2Char(003),Num2Char(004),Num2Char(005),Num2Char(006),Num2Char(007),Num2Char(008),Num2Char(009)) X=StrCat(X,Num2Char(010),Num2Char(011),Num2Char(012),Num2Char(013),Num2Char(014),Num2Char(015),Num2Char(016),Num2Char(017),Num2Char(018),Num2Char(019)) X=StrCat(X,Num2Char(020),Num2Char(021),Num2Char(022),Num2Char(023),Num2Char(024),Num2Char(025),Num2Char(026),Num2Char(027),Num2Char(028),Num2Char(029)) X=StrCat(X,Num2Char(030),Num2Char(031),Num2Char(032),Num2Char(033),Num2Char(035),Num2Char(036),Num2Char(037),Num2Char(038),Num2Char(039)) X=StrCat(X,Num2Char(040),Num2Char(041),Num2Char(043),Num2Char(044),Num2Char(045),Num2Char(046),Num2Char(048),Num2Char(049)) X=StrCat(X,Num2Char(050),Num2Char(051),Num2Char(052),Num2Char(053),Num2Char(054),Num2Char(055),Num2Char(056),Num2Char(057),Num2Char(059)) X=StrCat(X,Num2Char(061),Num2Char(064),Num2Char(065),Num2Char(066),Num2Char(067),Num2Char(068),Num2Char(069)) X=StrCat(X,Num2Char(070),Num2Char(071),Num2Char(072),Num2Char(073),Num2Char(074),Num2Char(075),Num2Char(076),Num2Char(077),Num2Char(078),Num2Char(079)) X=StrCat(X,Num2Char(080),Num2Char(081),Num2Char(082),Num2Char(083),Num2Char(084),Num2Char(085),Num2Char(086),Num2Char(087),Num2Char(088),Num2Char(089)) X=StrCat(X,Num2Char(090),Num2Char(091),Num2Char(093),Num2Char(094),Num2Char(095),Num2Char(096),Num2Char(097),Num2Char(098),Num2Char(099)) X=StrCat(X,Num2Char(100),Num2Char(101),Num2Char(102),Num2Char(103),Num2Char(104),Num2Char(105),Num2Char(106),Num2Char(107),Num2Char(108),Num2Char(109)) X=StrCat(X,Num2Char(110),Num2Char(111),Num2Char(112),Num2Char(113),Num2Char(114),Num2Char(115),Num2Char(116),Num2Char(117),Num2Char(118),Num2Char(119)) X=StrCat(X,Num2Char(120),Num2Char(121),Num2Char(122),Num2Char(123),Num2Char(125),Num2Char(126),Num2Char(127),Num2Char(128),Num2Char(129)) X=StrCat(X,Num2Char(130),Num2Char(131),Num2Char(132),Num2Char(133),Num2Char(134),Num2Char(135),Num2Char(136),Num2Char(137),Num2Char(138),Num2Char(139)) X=StrCat(X,Num2Char(140),Num2Char(141),Num2Char(142),Num2Char(143),Num2Char(144),Num2Char(145),Num2Char(146),Num2Char(147),Num2Char(148),Num2Char(149)) X=StrCat(X,Num2Char(150),Num2Char(151),Num2Char(152),Num2Char(153),Num2Char(154),Num2Char(155),Num2Char(156),Num2Char(157),Num2Char(158),Num2Char(159)) X=StrCat(X,Num2Char(160),Num2Char(161),Num2Char(162),Num2Char(163),Num2Char(164),Num2Char(165),Num2Char(166),Num2Char(167),Num2Char(168),Num2Char(169)) X=StrCat(X,Num2Char(170),Num2Char(171),Num2Char(172),Num2Char(173),Num2Char(174),Num2Char(175),Num2Char(176),Num2Char(177),Num2Char(178),Num2Char(179)) X=StrCat(X,Num2Char(180),Num2Char(181),Num2Char(182),Num2Char(183),Num2Char(184),Num2Char(185),Num2Char(186),Num2Char(187),Num2Char(188),Num2Char(189)) X=StrCat(X,Num2Char(190),Num2Char(191),Num2Char(192),Num2Char(193),Num2Char(194),Num2Char(195),Num2Char(196),Num2Char(197),Num2Char(198),Num2Char(199)) X=StrCat(X,Num2Char(200),Num2Char(201),Num2Char(202),Num2Char(203),Num2Char(204),Num2Char(205),Num2Char(206),Num2Char(207),Num2Char(208),Num2Char(209)) X=StrCat(X,Num2Char(210),Num2Char(211),Num2Char(212),Num2Char(213),Num2Char(214),Num2Char(215),Num2Char(216),Num2Char(217),Num2Char(218),Num2Char(219)) X=StrCat(X,Num2Char(220),Num2Char(221),Num2Char(222),Num2Char(223),Num2Char(224),Num2Char(225),Num2Char(226),Num2Char(227),Num2Char(228),Num2Char(229)) X=StrCat(X,Num2Char(230),Num2Char(231),Num2Char(232),Num2Char(233),Num2Char(234),Num2Char(235),Num2Char(236),Num2Char(237),Num2Char(238),Num2Char(239)) X=StrCat(X,Num2Char(240),Num2Char(241),Num2Char(242),Num2Char(243),Num2Char(244),Num2Char(245),Num2Char(246),Num2Char(247),Num2Char(248),Num2Char(249)) X=StrCat(X,Num2Char(250),Num2Char(251),Num2Char(252),Num2Char(253),Num2Char(254),Num2Char(255)) Alph=X IF StrLen(File)>0 && StrLen(file)<216 && validate_Dir(Alph,File,Code) THEN RETURN Goodfile ; Good long filename. ELSE RETURN Badfile ; Invalid long filename. ENDIF #ENDFUNCTION #DEFINEFUNCTION validate_Dir(Alph,Dir,Code) ; Check for valid file name characters. ; Alph - Valid file name characters ; Dir - File root/extension ; Code 1 - Dos file name check ; code 0 - Windows file name check ; ; return 1 - good File root/extension name ; return 0 - invalid File root/extension name IF Code==1 ; Dos file name check? Nodosname=" clock$ con aux com1 com2 com3 com4 lpt1 lpt2 lpt3 nul prn " ; Reserved Dos file names. IF StrIndexNc(Nodosname,StrCat(" ",Dir," "),1,@Fwdscan) THEN RETURN 0 ; Invalid dos file name. ENDIF FOR X=1 TO StrLen(Dir) IF StrScan(Alph,StrSub(Dir,X,1),1,@Fwdscan) THEN CONTINUE ; Valid file name character. ELSE RETURN 0 ; Invalid file name character. NEXT RETURN 1 #ENDFUNCTION ; Examples IF validate_File_Name("validdos.fil",1) THEN Message("validdos.fil","Valid dos file name") IF validate_File_Name("Prn.wbt",1) THEN Message("","Valid dos file name") ELSE Message("Prn.wbt","Invalid - reserved Dos file name") IF validate_File_Name("aaaaaaaaaaaaaaaaaaaaPrn.wbt",0) THEN Message("aaaaaaaaaaaaaaaaaaaaPrn.wbt","Valid Windows file name") IF validate_File_Name(StrCat(Num2Char(169),"aaaaaaaaaaaaaaaaaaaaPrn.wbt"),0) THEN Message(StrCat(Num2Char(169),"aaaaaaaaaaaaaaaaaaaaPrn.wbt"),"Valid Windows file name with copyright")
Article ID: W15015
File Created: 2001:11:08:12:41:20
Last Updated: 2001:11:08:12:41:20