2013-02-12 4 views
2

Windows에서 비디오 파일을 두 번 클릭하고 나면 파일을 dir 또는 2 위로 이동하고 포함 된 폴더를 삭제합니다.VLC : 끝까지 파일 이동

C:\Users\User1\Downloads에있는 파일 (예 : %x%)에만 영향을주고 싶습니다. 파일이 %x%\Training.4273865.2013.avi입니다

  1. 경우가 ..\Viewed\로 이동해야합니다 :

    는이 개 시나리오가 있습니다.

  2. 파일이 %x%\Showcase\SomeFile.mp4 인 경우이 파일은 ..\..\Viewed\과 같은 폴더로 이동해야합니다. Showcase 폴더를 삭제해야합니다. 현재 Showcase (그리고 다른 내용) 전에 VLC (파일 핸들 닫기)를 닫아야합니다.

솔루션은 좋은 것입니다,하지만 난 또는 유사한 오픈 소스 컴파일러로 컴파일 할 수있는 모든 언어를 상관하지 않습니다.

답변

3

다음은 사용자가 원하는대로 할 수있는 예제 C# 응용 프로그램입니다. 비디오 파일을 마우스 오른쪽 단추로 클릭하고 연결 프로그램을 선택하고 C# 응용 프로그램의 실행 파일을 선택하여 실행하십시오 (이 파일을 열 때 항상 "선택한 프로그램을 사용하십시오"확인란을 선택하여 영구적으로 변경할 수 있습니다).

static void Main(string[] args) 
{ 
    if (args.Length < 1) 
     return; 

    string vlc = @"C:\Program Files\VideoLAN\VLC\vlc.exe"; 
    string videoFile = args[0]; 
    string pathAffected = @"C:\Users\User1\Downloads"; 
    string destinationPath = System.IO.Directory.GetParent(pathAffected).FullName; 
    destinationPath = System.IO.Path.Combine(destinationPath, @"Viewed\"); 

    Process vlcProcess = new Process(); 
    vlcProcess.StartInfo.FileName = vlc; 
    vlcProcess.StartInfo.Arguments = "\"" + videoFile + "\""; 
    vlcProcess.StartInfo.Arguments += " --play-and-exit"; 
    vlcProcess.Start(); 
    vlcProcess.WaitForExit(); 

    if (videoFile.IndexOf(pathAffected, 
     StringComparison.InvariantCultureIgnoreCase) >= 0) 
    { 
     System.IO.File.Move(videoFile, 
      System.IO.Path.Combine(destinationPath, 
      System.IO.Path.GetFileName(videoFile))); 

     if (IsSubfolder(pathAffected, 
      System.IO.Path.GetDirectoryName(videoFile))) 
     { 
      System.IO.Directory.Delete(
       System.IO.Directory.GetParent(videoFile).FullName, true); 
     } 
    } 

} 

나는 this questionIsSubfolder의 코드를 발견했다.

+0

위대한 답변을 주셔서 감사합니다, 나는 당신에게 현상금을 수여했습니다! 한 가지 질문 : VLC가 실제로 전체 비디오를 재생하고 자발적으로 종료 한 경우에만 파일을 이동하는 방법이 있습니까? 그것이 비디오의 중간에 VLC를 닫으면, 파일은 어쨌든 이동됩니다. 감사. –

+0

현상금에 감사드립니다! VLC에서 전체 비디오를 완성했다는 신호를 알지 못합니다. 그 질문을 별도의 질문으로 게시하고 누군가가 그 답변을 알고 있는지 확인할 수 있습니다. – endofzero

+0

안녕하세요, 저는이 프로그램을 최근에 많이 사용했기 때문에 감사합니다. 비디오가 다른 파일과 함께 하위 디렉토리에있을 때 다른 파일은 삭제되지만 좋은 것은 삭제되지만 디렉토리 자체는 삭제되지 않습니다. Windows에서 수동으로 수동으로 삭제하려고하면 파일 핸들 문제가 발생합니다. 약 3-5 초 후, 하위 디렉토리를 삭제할 수 있습니다. 솔루션을 완전히 작동 시키려면 어떻게합니까? dir의 핸들을 놓을 때까지 기다릴 수있는 방법이 있습니까? 아니면 먼저 핸들을 닫으시겠습니까? 감사! –

3

래퍼를 작성하여 미디어 파일과 연결할 수 있습니다.

VLC를 간접적으로 실행 한 다음 파일이 닫히면 간접적으로 파일을 이동합니다.

VLC는 스트림 목록을 인수로 사용하고 VLC를 자동 종료하도록 재생 목록 끝에 vlc://quit을 추가합니다.

C#으로 작성된 래퍼가 더 유연하지만 배치의 빠른 예제가 있습니다.

set VLC=C:\Program Files\VideoLAN\VLC\vlc.exe 
set FILE=Tig Notaro - Live.mp3 
start "VLC" /WAIT "%VLC%" "%FILE%" vlc://quit 
echo VLC has closed, I can move the file. 
move "%FILE%" old/ 
pause 
+0

답변 주셔서 감사합니다! 나는 [tag : C#] 또는 [tag : batch] 솔루션이 좋겠지 만, [tag : C#] 솔루션은 더 유연하다고 말했습니다. 노력에 감사드립니다! –

관련 문제