Multi Commander - 파일/폴더이름 끝에 날짜 붙이기 Script
페이지 정보
본문
Total Commander와 유사하나 무료여서 Multi Commander를 사용중입니다.
자주쓰는 명령을 아래에 Button으로 둘수있는데 업무상 파일뒤에 날짜를 붙이는 행위(?)를 많이하게되서
인터넷을 뒤지다가 발견하고 네자리 확장자에 대응할 수 있게 수정해서 사용중입니다.
여러파일을 한번에 선택해도 날짜붙이기 가능해서 편리합니다.
--- 추가팁 ---
기본: 일기장_20240401.docx 파일을 선택해서 스크립트를 수행하면 일기장_20240405.docx로 바뀌게 됩니다.
하지만! 일기장_20240401.docx를 같은 폴더내 복붙하여 일기장_20240401 - Copy.docx라는 파일을 생성하고
일기장_20240401 - Copy.docx 파일에 대해 스크립트를 수행하면 " - Copy"가 붙어있는 파일임을 인지하여
일기장_20240405.docx라는 이름으로 변경해주게 됩니다.
" - Copy"부분은 영문 윈도우 기준으로 스크립트를 짜둬서 그러합니다. 한국어 윈도우라면 "- 복사본(?)"으로 수정하여 사용하시면 됩니다.
function MakeNewName($fbase, $fext)
{
@var $now = GetTime();
@var $date = FormatDate( "yyyyMMdd" , $now );
// Append date to base
$fbase = $fbase + "_" + $date;
// Prepend date to base
//$fbase = $date + " " + $fbase;
return $fbase + $fext;
}
function main()
{
Log(0, 10, "-------------- Script Start --------------" );
@var $logprefix = "scMultiRename: ";
@var $i;
@var $filebase;
@var $fileext;
@var $resultsstr = "";
@var $resultsarr[];
@var $arrfullpath = GetSelectedPaths();
@var $arr = GetSourceSelectedFileNames();
@var $count = arrayCount($arr);
if ($count == 0)
{
Log(0, 10, $logprefix + "no files selected, exiting");
}
else
{
for($i = 0; $i < $count; $i++)
{
//Log(0, 10, $logprefix + "Full path:" + $arrfullpath[$i]);
@var $dotpos = max(StrRegExpFind($arr[$i], "\....$" ),StrRegExpFind($arr[$i], "\.....$" ));
if ($dotpos == -1)
{
$filebase = $arr[$i];
$fileext = "";
}
else if (StrSub($arr[$i], $dotpos-8, 8) > 20000000)
{
$filebase = StrSub($arr[$i], 0, $dotpos-9);
$fileext = StrSub($arr[$i], $dotpos, -1);
}
else if (StrSub($arr[$i], $dotpos-7, 7) == " - Copy")
{
$filebase = StrSub($arr[$i], 0, $dotpos-16);
$fileext = StrSub($arr[$i], $dotpos, -1);
}
else
{
$filebase = StrSub($arr[$i], 0, $dotpos);
$fileext = StrSub($arr[$i], $dotpos, -1);
}
arrayAdd($resultsarr, MakeNewName($filebase, $fileext));
//Log(0, 10, $logprefix + "\"" + $arr[$i] + "\" --> " + $resultsarr);
$resultsstr = $resultsstr + $arr[$i] + " -->\r\n" + $resultsarr[$i] + "\r\n";
}
@var $msganswer = MessageBox("Proceed with rename?", $resultsstr, 1);
if ($msganswer == 1)
{
Log(0, 10, $logprefix + "[Ok] renaming...");
for($i = 0; $i < $count; $i++)
{
@var $newname = $resultsarr[$i];
Log(0, 10, $logprefix + "Renaming:[" + $arrfullpath[$i] + "] to [" + $newname + "]");
MC.Filesystem.Rename FILE="{$arrfullpath[$i]}" NEWNAME='{$newname}'
}
}
else
{
Log(0, 10, $logprefix + "[Cancel] not renaming...");
}
}
Log(0, 10, "-------------- Script Done --------------" );
}
main();
tb99님의 댓글
저도 소싯적에 노턴 커맨더부터 M dir 까지 썼었는데요. 최근까지 멀티 커맨더 쓰다가 이제는 free commander로 갈아 탔습니다. 하지만 공유 잘 봤습니다~
마루치님의 댓글