2017-12-24 1 views
0

inpowershell 파일을 다운로드하고 실행하는 가장 짧은 코드는 무엇입니까?짧은 powershell 명령 다운로드 및 실행

+0

이 코드는 CodeReview에서 더 유용한 주제입니다. 어쨌든 세 개의 파일을 다운로드해야하므로 세 가지 다운로드 명령이 필요합니다. 스크립트는 매우 간단하고 읽기 쉽기 때문에 단축하면 이점이 거의 없습니다. 왜 그걸 단축하고 싶니? – vonPryz

+0

올바른 방향으로 나를 가르쳐 주셔서 감사합니다. PowerShell에 대해 더 배우고 코드를 최적화하고자합니다. – Mariyah

+0

의미를 크게 변경하는 질문을 편집하지 마십시오 –

답변

0

오래된 단언은 필요가없는 한 최적화를 피하는 것입니다. 프로그램은 가독성을 공감해야합니다. 코드가 이해하기 어렵다면 모든 버그는 복잡성으로 쉽게 위장 할 수 있습니다. 오래된 주인 중 한 사람이 다음과 같이 말했습니다 :

실제 문제는 프로그래머가 잘못된 장소와 잘못된 시간에 효율성에 대해 너무 많은 시간을 소비한다는 것입니다. 조숙 한 최적화는 프로그래밍의 모든 악 (또는 적어도 대부분)의 근원입니다.

-Donald 크 누스가 말했다되고 그건

이 샘플을 최적화 할 수 있습니다 - 제작하여 더 읽을 수 및 유지 보수. 성능은 변하지 않을 것입니다. 가장 느린 부분은 원격 파일을 가져 오는 것입니다.

는 고려

그래서 무엇을 수행하는 소스 및 대상 데이터 항목이 데이터 구조에서 함께 결합되어 말한다. 소스와 대상은 더 이상 문자열이 아니라 객체의 속성입니다. 객체는 배열에 저장됩니다. 모든 객체를 처리하기 위해 배열은 배열 요소를 하나씩 읽고 파이프 라인으로 보낼 Foreach-Object (일명 %)으로 반복 할 수 있습니다. $_은 foreach 문이 배열에서 선택한 요소 인 파이프 라인의 현재 개체를 의미합니다.

이 방법을 사용하면 WebClient의 DownloadFile에서 하드 코딩 된 경로를 염려 할 필요가 없습니다. 파이프 된 객체의 속성 .Src.Dst에서 해당 객체를 읽습니다.

이제 두 파일을 다운로드하는 방법이 과도하게 까다 롭습니다. 하지만 20 명이 처리해야한다면 어떨까요? 그런 다음 모든 원본 및 대상 튜플이 배열에 추가되는 스크립트의 시작 부분에서 소스 - 대상 쌍을 유지 관리하는 것이 훨씬 쉽습니다.

+0

답장을 보내 주셔서 감사합니다. 진심으로 감사드립니다. 내가 편집을 좋아하고 그걸 배웠을 때 처음에는 모든 다운로드마다 "New-Object Net.WebClient) .DownloadFile"을 반복해야만하는지 알고 싶었습니다. 그리고/또는이 명령의 짧은 형식이 있습니다. 예를 들어, "command"대신 powershell에서 "cm"을 사용할 수 있습니다. 그러나 New-Object Net.WebClient의 짧은 양식이 있습니까?) 다운로드 파일? – Mariyah

+0

새 개체를 만드는 대신'$ wc.DownloadFile()'을 몇 번 사용할 수 있습니다. 나는 아직도 더 짧은 형태를 찾으려는 어떤 이유도 보지 못한다. 읽기 쉬운 것은 좋은 것입니다. – vonPryz