간단한 항목 삭제 한 줄짜리 개선

간단한 항목 삭제 한 줄짜리 개선

그래서 삭제 항목 한 줄을 업그레이드하고 싶었습니다. 기본 파일 경로(\HQDEVAPP004\C$\LoneStar\ProcessorHandlers\Test)를 스크립트 상단에 정의된 2개의 변수로 나누고 싶습니다. 다음과 같은 것 :

  1. $rootdir = "\HQDEVAPP004\C$\LoneStar"
  2. $svcdir = {여기에 서비스 이름 삽입}(예: 메시지 라우터, 프로세서 핸들러)

그런 다음 전체 디렉터리 경로인 세 번째 변수를 만듭니다. 이 변수는 1 + 2를 함께 묶는 것입니다. "+" 연산자를 사용하여 수행할 수 있습니다. 제가 틀렸다면 정정해 주시기 바랍니다.

아이디어는 결국 foreach 루프를 실행하여 svcdir 경로를 가져와 설정하고, 파일을 삭제하려는 전체 디렉터리 경로를 동적으로 연결하고, 삭제 프로세스를 실행한 다음 이동할 수 있다는 것입니다. 다음 서비스 폴더로 이동합니다. 제가 설명한 것이 맞기를 바랍니다. 혹시라도 제가 사용했던 한 줄을 보고 싶다면 아래에 적어두겠습니다.

Get-ChildItem -recurse \\HQDEVAPP004\C$\LoneStar\ProcessorHandlers\Test\*.* | Remove-Item

답변1

우선, Remove-Item와일드카드를 허용하는 Path 및 LiteralPath 속성이 있으므로 현재 하나의 라이너는 이미 없이도 작동합니다.Get-ChildItem

Remove-Item \\HQDEVAPP004\C$\LoneStar\ProcessorHandlers\Test\*.* -Recurse -Force

Join-Path"함께 붙이기"에 대해서는 또는 Format 연산자 중 하나를 제안합니다 -f.

Join-Path예(이 경우 백슬래시에 대해 걱정할 필요가 없습니다):

PS C:\> $rootdir = "\\HQDEVAPP004\C$\LoneStar"
PS C:\> $svcdir = "Message Router"
PS C:\> Join-Path $rootdir $svcdir
\\HQDEVAPP004\C$\LoneStar\Message Router

-f예( {0}제공한 인수가 배치될 위치에 유의하세요):

PS C:\> $rootdir = "\\HQDEVAPP004\C$\LoneStar\{0}"
PS C:\> $svcdir = "Message Router"
PS C:\> $rootdir -f $svcdir
\\HQDEVAPP004\C$\LoneStar\Message Router

Remove-Item그렇습니다. 모든 경로에 대해 탐색하고 접착 작업을 수행할 수 있지만 배열을 처리할 수 있으므로 원하는 모든 경로를 직접 제공할 수도 있습니다 .

cd "\\HQDEVAPP004\C$\LoneStar"
Remove-Item ".\Message Router\*.*",".\SomeOtherPath" -Recurse -Force

관련 정보