mirror of
https://github.com/eworm-de/routeros-scripts.git
synced 2024-05-11 05:55:19 +00:00
global-functions: $MkDir: create directories recursively
This commit is contained in:
@ -521,6 +521,7 @@
|
||||
:set MkDir do={
|
||||
:local Path [ :tostr $1 ];
|
||||
|
||||
:global CharacterReplace;
|
||||
:global CleanFilePath;
|
||||
:global GetRandom20CharAlNum;
|
||||
:global LogPrintExit2;
|
||||
@ -536,22 +537,37 @@
|
||||
:return true;
|
||||
}
|
||||
|
||||
:if ([ :len [ /file/find where name=$Path ] ] = 1) do={
|
||||
$LogPrintExit2 warning $0 ("The path '" . $Path . "' exists, but is not a directory.") false;
|
||||
:return false;
|
||||
}
|
||||
:local Error false;
|
||||
:local PathNext "";
|
||||
:foreach Dir in=[ :toarray [ $CharacterReplace $Path "/" "," ] ] do={
|
||||
:local Continue false;
|
||||
:set PathNext [ $CleanFilePath ($PathNext . "/" . $Dir) ];
|
||||
|
||||
:local Return true;
|
||||
:local Name ($Path . "-" . [ $GetRandom20CharAlNum 6 ]);
|
||||
:do {
|
||||
/ip/smb/share/add disabled=yes directory=$Path name=$Name;
|
||||
$WaitForFile $Path;
|
||||
} on-error={
|
||||
$LogPrintExit2 warning $0 ("Making directory '" . $Path . "' failed!") false;
|
||||
:set Return false;
|
||||
:if ([ :len [ /file/find where name=$PathNext type="directory" ] ] = 1) do={
|
||||
:set Continue true;
|
||||
}
|
||||
|
||||
:if ($Continue = false && [ :len [ /file/find where name=$PathNext ] ] = 1) do={
|
||||
$LogPrintExit2 warning $0 ("The path '" . $PathNext . "' exists, but is not a directory.") false;
|
||||
:return false;
|
||||
}
|
||||
|
||||
:if ($Continue = false) do={
|
||||
:local Name ($PathNext . "-" . [ $GetRandom20CharAlNum 6 ]);
|
||||
:do {
|
||||
/ip/smb/share/add disabled=yes directory=$PathNext name=$Name;
|
||||
$WaitForFile $PathNext;
|
||||
} on-error={
|
||||
$LogPrintExit2 warning $0 ("Making directory '" . $PathNext . "' failed!") false;
|
||||
:set Error true;
|
||||
}
|
||||
/ip/smb/share/remove [ find where name=$Name ];
|
||||
:if ($Error = true) do={
|
||||
:return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
/ip/smb/share/remove [ find where name=$Name ];
|
||||
:return $Return;
|
||||
:return true;
|
||||
}
|
||||
|
||||
# prepare NotificationFunctions array
|
||||
|
Reference in New Issue
Block a user