2014-12-31 1 views
0

저는 Powershell을 처음 사용하지만 dBase III, 기본, 포트란 (내 나이를 보여줍니다)을 비롯한 다양한 프로그래밍 언어에 대한 경험이 있습니다. 나는 뮤지션이며 노래방처럼 라이브 공연을 할 때 MP3 파일을 동행합니다. 나는 내가 사용하는 약 45 가지 MP3를 가지고있다. 나는 수시로 내가하는 노래의 순서를 바꾸고 싶다. 그리고 이것은 앞의 시퀀스 번호로 MP3 파일 이름의 이름을 바꿔야한다. 파일 이름은 "01 songnameA.mp3", "02 songnameB.mp3", "03 songnameC.mp3"등의 형식을 취합니다. 또한 노래를 반복하므로 폴더에 "09 songnameA.mp3"이있을 수 있습니다. 나는 다시 플레이한다. 이렇게하려면 일반적으로 노래를 순서대로 나열하는 텍스트 파일을 만듭니다. 텍스트 파일의 각 행은 "01 Songname X"형식이지만 MP3 확장자는 없습니다. 그런 다음 수동으로 mp3 파일을 폴더에 복사 한 다음 텍스트 파일에 따라 시퀀스 번호를 적용하여 이름을 편집합니다. 이것은 시간이 많이 소요됩니다.파일이 포함 된 새로 생성 된 배열을 같은 컴퓨터의 다른 폴더에 복사하는 방법

텍스트 파일 콘텐츠 배열과 번호가 지정되지 않은 MP3 노래 파일 배열을 만드는 Powershell 스크립트 (버전 2)를 만들었습니다. 스크립트는 텍스트 파일의 순서에 따라 번호가 매겨진 MP3 파일 이름을 포함하는 세 번째 배열을 만듭니다. 이 배열은 작동하며 "01 SongnameX.mp3"형식의 항목 목록을 쉽게 표시 할 수 있습니다. 그러나 이전 시퀀스 번호가있는이 MP3 파일 이름 배열을 다른 폴더에 복사 할 수 없었습니다. 나는 "Copy-Item"문구의 변형이 얼마나 많은지 모르지만 아무것도 시도하지 못했습니다. 파일 이름을 포함하는 배열의 이름은 $ nsfarray (새 노래 파일 배열)입니다. 현재 사용중인 명령 :

$ nsfarray | 복사 항목 -destination C :

복사 항목 : 경로를 찾을 수 없습니다 'C : \ 사용자가 내 HP \ 문서는 01 \ 내 스크립트 \ \ \ 임시

다음과 같은 오류 메시지를 반환 좋은 시간 .mp3 '이 존재하지 않기 때문입니다.

경로는 Powershell을 실행하는 데 사용하는 기본 경로이지만 어떻게 든 MP3 파일 이름이 추가됩니다. "01 A Good Time.mp3"은 $nsfarray의 첫 번째 항목입니다. 나는 여기서 뭔가를 놓치고 있다는 것을 압니다. 모든 제안을 부탁드립니다.

+0

적어도 큰 텍스트 블록을 읽을 수있는 단락으로 나눌 수 있습니까? 게시물에 관련성이없는 많은 정보가있는 것으로 보이며 그 중 일부를 제거하면 질문을 분명히하는 데 도움이됩니다. 그것이 지금 서서 내 눈을 아프게하고 나는 당신이 무엇을 요구하고 있는지 분명하지 않습니다. :-) 감사. –

+0

여기서 볼 수있는 문제는 올바르지 않은 경로는 물론 존재하지 않는 파일 이름 목록이 있다는 것입니다. "복사"할 수 있도록 "세트"목록을 가져 와서 실제 파일 이름을 추출해야합니다. – Matt

답변

0

이것은 정말 원유이지만 입력 파일에서 볼 수있는 문제는 분명히 복사하려는 실제 파일 이름과 정확히 일치하지 않는다는 것입니다. 그래서 이것을 염두에두고 크기에 대해 시도해보십시오. 명시 적 경로와

$musicPath = "c:\music" 
$destinationPath = "c:\songset" 

$nsfarray = "01 Age of Aquarius" 
$nsfarray | ForEach-Object{ 
    If($_ -match '^\d+ *(?<BaseName>.*)'){ 
     Copy-Item "$musicPath\$($Matches.BaseName).mp3" -Destination "$_.mp3" 
    } 
} 

일은 : $musicPath$destinationPath 우리는 PowerShell의 현재 위치에 의존하지 않아도됩니다. 그런 다음 배열의 각 값을 탐색합니다.이 값은 하나의 예제로 채워져 있습니다. 이제 세트 목록 번호에서 실제 파일 이름을 추출해야합니다. regex를 사용하여 문자열의 시작 부분과 공백이 아닌 부분을 반환하고 그 후에 모든 것을 취합니다.

"Age of Aquarius.mp3"이라는 실제 파일이어야하는 $musicPath 폴더에있는 파일을 복사 한 다음 $destinationPath에 "01 Age of Aquarius.mp3" 이것은 당신이 당신의 공연을 위해 파일을 원하는 방식입니다.

이 대답하고 다시 내가 제대로 이해하지 않은 기회가 생각하는 질문보고 후 해명

.이 문제를 해결하는 올바른 방법이 아닌 경우 질문을 업데이트하십시오. 문제의 핵심은, 다른 것이 없다면 mp3에 적절한 파일 경로를 지정하지 않는다는 것입니다. 적절한 소스 폴더를 사용하고 mp3를 문자열에 추가해야합니다.

관련 문제