Is this advanced
Code: Select all
::--------------------------------------------------------------------------------------------------------------------------
goto :skip "()"
::
:§Declare.RegKeyObject ()
::
rem %_forT% ( "!$Trace!" ) %@Debug.on%
::
%_forP% ( '"#Name,""%%~a""", "Path,""%%~b""", "#Key,""%%~c""", "Data,""%%~d"",#", "Type,""%%~e"",#", "#SetsError,""%%~f"",0"' ) %@Param%
::(
%_necho% !$Trace!: '!$Name!'
%@sLError% &%@rError% &(
%_forX% ( '"!$Name!", "!$Path!"' ) %@Declare.RegPathLHE% &%@gLError%
%_forX% ( '"!$Name!", "!$Type!"' ) %@Declare.RegTypeLHE% &%@gLError%
) &%@sLError%
::
if !$error! equ 0 (
::
set "$Return=$error"
set "!$Name!.0=RegKey"
set "!$Name!.Key=!$Key!"
set "!$Name!.Data=!$Data!"
set "!$Name!.method=exist, write, read, delete, touch"
%_forX% ( '"!$Name!", 1' ) %@Declared.ObjectL%
) else %@IfSetsErrorExit%
% % set ^"%$Declared%.exist=!@Udelim! ( %$n1c%
% % !_forT! ( "%$Declared%.exist" ) !@SetLocal! %$n1c%
% % !_forL! ( '"#SetsError,""%%~a"",0"' ) !@Param! %$n1c%
% % !_necho! ^^^!$Trace^^^!: '^^^!%$Declared%.Key^^^!' %$n1c%
% % !_necho! $Path: '^^^!%$Declared%.Path^^^!' %$n1c%
% % if not defined $Key ( %$n1c%
% % !_tError! 2 %= $2.error=input missing=% %$n1c%
% % ) else ^>nul 2^>^&1 reg query "^!%$Declared%.Path^!" /v "^!%$Declared%.Key^!" ^|^|( %$n1c%
% % !_tError! 17 %= $17.error=Object not physically exists=% %$n1c%
% % ) %$n1c%
% % !@IfSetsErrorExit! %$n1c%
% % !_forL! ( '^^^!$Return^^^!' ) !@EndLocal! ^&!@nError! %$n1c%
% % ) ^&if ^^^!$error^^^! EQU 0 ^>nul echo.chain"
::
::set "$obj.exist=!%$Declared%.exist!"
::%_forX% ( '0' ) %$obj.exist% ||(%@endoftest%)
% % set ^"%$Declared%.write=!@Udelim! ( %$n1c%
% % !_forT! ( "%$Declared%.write" ) !@SetLocal! %$n1c%
% % !_forL! ( '"#SetsError,""%%~a"",0"' ) !@Param! %$n1c%
% % !_necho! ^^^!$Trace^^^! %$n1c%
% % !_necho! $Path: '^^^!%$Declared%.Path^^^!' %$n1c%
% % !_necho! $Key : '^^^!%$Declared%.Key^^^!' %$n1c%
% % !_necho! $Type: '^^^!%$Declared%.type^^^!' %$n1c%
% % !_necho! $Data: '^^^!%$Declared%.Data^^^!' %$n1c%
% % set "$Data=^!%$Declared%.Data:""=\"^^^!^^^" %$n1c%
% % ^>nul reg add "^!%$Declared%.Path^!" /v "^!%$Declared%.Key^!" /t ^^^!%$Declared%.type^^^! /f /d "^!$Data^!" ^|^|!@gError! %$n1c%
% % !@IfSetsErrorExit! %$n1c%
% % !_forL! ( '^^^!$Return^^^!' ) !@EndLocal! ^&!@nError! %$n1c%
% % ) ^&if ^^^!$error^^^! EQU 0 ^>nul echo.chain"
::
::set "$obj.write=!%$Declared%.write!"
::%_forX% ( '1' ) %$obj.write% ||(%@endoftest%)
% % set ^"%$Declared%.read=!@Udelim! ( %$n1c%
% % !_forT! ( "%$Declared%.read" ) !@SetLocal! %$n1c%
% % !_forL! ( '"#SetsError,""%%~a"",0"' ) !@Param! %$n1c%
% % !_necho! ^^^!$Trace^^^! %$n1c%
% % !_necho! $Path: '^^^!%$Declared%.Path^^^!' %$n1c%
% % !_necho! $Key : '^^^!%$Declared%.Key^^^!' %$n1c%
% % ^>nul 2^>^&1 reg query "^!%$Declared%.Path^!" /v "^!%$Declared%.Key^!" ^&^&( %$n1c%
% % for /f "skip=4 tokens=2,3* delims= " %%r in ( %$n1c%
% % '2%e5%>nul reg query "^!%$Declared%.Path^!" /v "^!%$Declared%.Key^!"' %$n1c%
% % ) do ( %$n1c%
% % set "%$Declared%.type=%%r" %$n1c%
% % set "%$Declared%.data=%%s" %$n1c%
% % if not defined %$Declared%.data if ^^^!$SetsError^^^! neq 0 ( %= $4.error=variable undefined =% %$n1c%
% % !_tError! 4 %$n1c%
% % ) else !_tError!-4 %$n1c%
% % ) %$n1c%
% % ) ^|^|!_tError! 17 %= $17.error=Object not physically exists=% %$n1c%
% % !@IfSetsErrorExit! %$n1c%
% % !_necho! $Data: '^^^!%$Declared%.Data^^^!' %$n1c%
% % !_necho! $Type: '^^^!%$Declared%.type^^^!' %$n1c%
% % set "%$Declared%=^!$Data^!" %$n1c%
% % !_forL! ( '^^^!$Return^^^!, %$Declared%, %$Declared%.type, %$Declared%.data' ) !@EndLocal! ^&!@nError! %$n1c%
% % ) ^&if ^^^!$error^^^! EQU 0 ^>nul echo.chain"
::
::set "$obj.read=!%$Declared%.read!"
::%_forX% ( '0' ) %$obj.read% ||(%@endoftest%)
% % set ^"%$Declared%.delete=!@Udelim! ( %$n1c%
% % !_forT! ( "%$Declared%.delete" ) !@SetLocal! %$n1c%
% % !_forL! ( '"#SetsError,""%%~a"",0"' ) !@Param! %$n1c%
% % !_necho! ^^^!$Trace^^^!: '^^^!%$Declared%.key^^^!' %$n1c%
% % !_necho! $Path: '^^^!%$Declared%.path^^^!' %$n1c%
% % ^>nul ( %$n1c%
% % 2^>nul reg query "^!%$Declared%.path^!" /v "^^^!%$Declared%.key^^^!" ^&^&( %$n1c%
% % reg delete "^!%$Declared%.path^!" /v "^^^!%$Declared%.key^^^!" /f ^|^|( %$n1c%
% % !_tError! 20 %= $20.error=object delete failed=% %$n1c%
% % ) %$n1c%
% % ) %$n1c%
% % ) %$n1c%
% % !@IfSetsErrorExit! %$n1c%
% % !_forL! ( '^^^!$Return^^^!' ) !@EndLocal! ^&!@nError! %$n1c%
% % ) ^&if ^^^!$error^^^! EQU 0 ^>nul echo.chain"
::
::set "$obj.delete=!%$Declared%.delete!"
::%_forX% ( '0' ) %$obj.delete% ||(%@endoftest%)
% % set ^"%$Declared%.touch=!@Udelim! ( %$n1c%
% % !_forT! ( "%$Declared%.touch" ) !@SetLocal! %$n1c%
% % !_forL! ( '"#SetsError,""%%~a"",0"' ) !@Param! %$n1c%
% % !_necho! ^^^!$Trace^^^!: '^^^!%$Declared%.key^^^!' %%~b %$n1c%
% % !_necho! $Path: '^^^!%$Declared%.Path^^^!' %$n1c%
% % if /i ["%%~b"] == ["Destroy"] ( %$n1c%
% % !_forX! ( '"^!%$Declared%.path^!", "^!%$Declared%.key^!", "^!%$Declared%.data^!", "^!%$Declared%.type^!", ^^^!$SetsError^^^!' ) !@RegWriteKeyLHE! %$n1c%
% % ) else ( %$n1c%
% % !_forX! ( '"%$Declared%", "^!%$Declared%.path^!", "^!%$Declared%.key^!", ^^^!$SetsError^^^!' ) !@RegReadKeyLHE! %$n1c%
% % set "%$Declared%.type=^!$type^!" %$n1c%
% % set "%$Declared%.data=^!$data^!" %$n1c%
% % ) %$n1c%
% % !@IfSetsErrorExit! %$n1c%
% % !_necho! $Type: '^^^!%$Declared%.type^^^!' %$n1c%
% % !_necho! $Data: '^^^!%$Declared%.data^^^!' %$n1c%
% % !_forL! ( '^^^!$Return^^^!, %$Declared%.type, %$Declared%.data' ) !@EndLocal! ^&!@nError! %$n1c%
% % ) ^&if ^^^!$error^^^! EQU 0 ^>nul echo.chain"
::
::set "$obj.touch=!%$Declared%.touch!"
::%_forX% ( '1, Destroy' ) %$obj.touch% ||(%@endoftest%)
%_forT% ( !%$Declared%.method! ) do set "$returnAdvanced=!$returnAdvanced!, !$Declared!.%%~!"
::)
%@nError% &exit /b %$error%
::--------------------------------------------------------------------------------------------------------------------------
::
goto :skip "()"
%@endoftest%
:skip ()
Code: Select all
>> Pre Define @Declare.FileObject, [Re]Create a File
<< Post Define @Declare.FileObject, [Re]Create a File [OK]
º@Declare.FileObject: '$aFile'
@Declared.ObjectL: '$aFile'
$aFile: 'C:\This Works.TMP'
$0: 'File'
$FullPathFile: 'C:\This Works.TMP'
$FullPath: 'C:'
$Path: 'C:'
$Drive: 'C:'
$File: 'This Works.TMP'
$FileName: 'This Works'
$FileExtension: 'TMP'
$method: 'exist, delete, touch, move'
[ok:0]
[ok:0]
$aFile.exist: 'C:\This Works.TMP'
[error:17] Object not physically exists !
endoftest Druk op een toets om door te gaan. . .
STOP a 400 kb script don't fit

Anyways, are u here to learn DOS or are u looking for a library that u can reuse in every DOS app, there are multiple libraries available, I am currently writing this one but it's an experimental one, I'm working on getting it more practical, bugfree and logical ...
I just noticed the path schouldn't be $path 'C:' but ''

O my dog, it's full with bugs, I just wrote this, implementing methods, because they are faster than macros (after declaration), so I claim.