1
0
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:
Christian Hesse
2022-12-13 15:30:24 +01:00
parent 58f769ac00
commit 1579330864

@ -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