Skip to content

Instantly share code, notes, and snippets.

@mlabrkic
Last active April 11, 2022 08:18
Show Gist options
  • Save mlabrkic/207565c149c5059964d364a9db5fedac to your computer and use it in GitHub Desktop.
Save mlabrkic/207565c149c5059964d364a9db5fedac to your computer and use it in GitHub Desktop.
"Multi Commander" script: Create folder and move selected files to that folder (+ docs/multiscript/functions), http://multicommander.com/
// Create_folder_and_move_selected_files, F12
// "Multi Commander" script:
// Create folder and move selected files to that folder (+ docs/multiscript/functions)
// http://forum.multicommander.com/forum/index.php/topic,2079.0.html
// Contributor: pncdaspropagandas
// #########################################################
// ### Docs ###
// Inserted, 2022-02M-20 16:20:25
// User Defined Commands - MultiScript:
// http://multicommander.com/docs/UDC_multiscript
// MultiScript Language Syntax:
// http://multicommander.com/docs/multiscript/languagesyntax
// ---------------------------------------------------------
// http://multicommander.com/docs/multiscript/functions/misc
// AskText
// <num> AskText( <str> label, <str> inputText, <num> option );
// http://multicommander.com/docs/multiscript/functions/misc#asktext
// MessageBox
// <num> MessageBox( <str> caption, <str> text, <num> options );
// http://multicommander.com/docs/multiscript/functions/misc#messagebox
// Log - Log text to a log window.
// <num> Log( <num> logID, <num> logLevel, <str> logText );
// http://multicommander.com/docs/multiscript/functions/misc#log
// ---------------------------------------------------------
// http://multicommander.com/docs/multiscript/functions/filesystem
// FileExists
// @var $res = FileExists( "C:\\temp\\MyFile.txt" );
// http://multicommander.com/docs/multiscript/functions/filesystem#fileexists
// IsFolder
// @var $res = IsFolder( "C:\\temp" );
// http://multicommander.com/docs/multiscript/functions/filesystem#isfolder
// MakeDir
// MakeDir( "C:\\Temp\NewFolder\\SubFolder\\", "LOCAL,RECURSIVE" );
// MakeDir( "C:\\Temp\\MyFiles.zip\\Folder", "" );
// http://multicommander.com/docs/multiscript/functions/filesystem#makedir
// MoveFile
// MoveFile( $targetPath, $sourceFile, "NODIALOG, OVERWRITE_ALL" );
// http://multicommander.com/docs/multiscript/functions/filesystem#movefile
// ---------------------------------------------------------
// http://multicommander.com/docs/multiscript/functions/string
// StrSub
// <str> StrSub(<str> input, <num> offset, <num> length);
// http://multicommander.com/docs/multiscript/functions/string#strsub
// StrIsEqual
// <num> StrIsEqual(<str> string1, <str> string2);
// http://multicommander.com/docs/multiscript/functions/string#strisequal
// StrLen
// @var $len = StrLen( $str );
// http://multicommander.com/docs/multiscript/functions/string#StrLen
// ---------------------------------------------------------
// MultiScript - Get and Set Selection and Paths
// http://multicommander.com/docs/multiscript/functions/getfilefromview
// GetSourceSelectedPaths
// @var $arr = GetSourceSelectedPaths("IGNORE_FOCUS");
// Get an array with the full paths of all selected items in the source view.
// http://multicommander.com/docs/multiscript/functions/getfilefromview#getsourceselectedpaths
// ---------------------------------------------------------
// MultiScript - Array functions
// http://multicommander.com/docs/multiscript/functions/array
// #########################################################
// Ask user for folder name
@var $answer = AskText("Type name of the new folder to create and move selected files.", "New folder", 0);
// If user canceled, abort
if ( $answer == 0 )
{
break;
}
// Folder exists?
@var $source_path = GetSourcePath();
if( FileExists($source_path ^ $answer) > 0 )
{
MessageBox("Error", "Typed folder already exists.", 0);
break;
}
else
{
// Create empty folder
// Check if source path is LOCAL
@var $options;
if( IsFolder($source_path) )
{
@var $colon_check = StrSub($source_path, 1, 1);
if( StrIsEqual($colon_check, ":") )
{
$options = "LOCAL,RECURSIVE";
}
else
{
$options = "";
}
}
else
{
$options = "";
}
if( MakeDir($source_path ^ $answer, $options) == 0 )
{
Log( 1, 10, "Created : " + $source_path ^$answer );
@var $selected_files = GetSourceSelectedPaths();
@var $n;
@var $len = StrLen($answer) - 1;
@var $slash = StrSub($answer, $len, 1);
if( StrIsEqual($slash, "\\") )
{
$slash = "";
}
else
{
$slash = "\\";
}
for( $n=0; $n<arrayCount($selected_files); $n++ )
{
// MoveFile has a bug where target path has to end with slash
if( $n == 0 )
{
MoveFile($source_path ^ $answer + $slash, $selected_files[$n], "NODIALOG,NOWAIT,USEEXISTINGQUEUE");
}
else
{
MoveFile($source_path ^ $answer + $slash, $selected_files[$n], "NODIALOG,NOWAIT,USEEXISTINGQUEUE");
}
}
// Select created folder
// SetClipboardText($source_path ^ $answer);
// MC.RunCmd ID="Core.1312"
// MC.Explorer.Selection.UnselectAll
}
else
{
MessageBox("Error", "Error while creating folder.", 0);
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment