2012-10-01 14 views
11

में शून्य त्रुटि है, मैं फ़ाइल नाम के आधार पर फ़ाइल नाम में विशेष वर्णों को हटाने के बाद सभी मेलों को स्थानांतरित करने का प्रयास कर रहा हूं। FOLDLIST एक सरणी है, जहां मुझे स्थिति चर और गंतव्य फ़ोल्डर नाम है।प्राप्त करना पैरामीटर 'पथ' पर तर्क को बाध्य नहीं कर सकता है क्योंकि यह पावरहेल

Set-Location 'C:\Users\abrahame\Desktop\Work\PSG Mail Movement\Mail' 
    $DESLOC="c:\Temp\ua-closed bugs" 
    $FOLDLIST = @(("UA", "CLOSE", "ua-closed bugs"), ("VS", "CLOSE", "vs-closed-bugs"), ("CM", "CLOSED", "cm - closed-bugs")) 
    gci | Foreach-object { $NEWN = $_.Name -replace '&',' ' -replace '_', ' ' -replace '#', ' ' -replace '!', ' ' -replace '@', ' ' -replace '$', ' ' -replace '%', ' ' -replace '^', ' ' -replace '&', ' ' -replace '\(', ' ' -replace '\)', ' ' -replace '\[', ' ' -replace '\]', ' ' -replace '\{', ' ' -replace '\}', ' ' -replace '\-', ' '; 
      write-host $NEWN.Length 
      if($NEWN.Length -gt 70){ 
        $NEWN="$NEWN.Substring(1,70)" 
        $NEWN=$NEWN.msg 


      } 

      $FOLDLIST | ForEach-Object { 
      $CXR=$_[0] 
      $STAT=$_[1] 

      if ($NEWN -match ("$CXR") -and $NEWN -match ("$STAT")){ 
      write-host $CXR - $STAT 
        $DIR=$_[2] 
        $NEWN=$NEWN.trim() 
        $DPATH="$DESLOC\$DIR\$NEWN" 
        write-host $DPATH 
        mv $_.Name $DPATH 
      } 
      } 

    } 

मुझे यह त्रुटि मिल रही है। कृपया सलाह दें कि मैंने गलती कहाँ की थी ..

67 
    UA - CLOSE 
    c:\Temp\ua-closed bugs\ua-closed bugs\RE CLOSE OA TICKET 10350 OA UAT PHASE FOR HP FARES 1 .msg 
    Move-Item : Cannot bind argument to parameter 'Path' because it is null. 
    At C:\Users\abrahame\Desktop\Work\PSG Mail Movement\mailmove_multdimentional.ps1:24 char:5 
    +   mv <<<< $_.Name $DPATH 
     + CategoryInfo   : InvalidData: (:) [Move-Item], ParameterBindingValidationException 
     + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.MoveItemCom 
     mand 

उत्तर

2

मेरा अनुमान है कि $ _। नाम मौजूद नहीं है।

अगर मैं तुम्हें थे, मैं आईएसई में स्क्रिप्ट लाने के लिए और यह लाइन के लिए लाइन को चलाने जब तक तुम वहाँ पाने के फिर $ का मूल्य _

+0

हाँ .. आप सही हैं .. समस्या हल हो गई। आपका बहुत बहुत धन्यवाद.. – Tamilan

3

$_ वर्तमान पाइपलाइन में सक्रिय वस्तु है। आपने $FOLDLIST | ... के साथ एक नई पाइपलाइन शुरू की है, इसलिए $_ पाइपलाइन को पारित करने वाले उस सरणी में ऑब्जेक्ट्स का प्रतिनिधित्व करता है। आप एक चर में पहली पाइपलाइन से FileInfo वस्तु छिपाया जाना चाहिए और फिर उस चर संदर्भ बाद में उदा .:

write-host $NEWN.Length 
$file = $_ 
... 
Move-Item $file.Name $DPATH 
+0

कीथ, मैं के रूप में ही कर रहा हूँ पर एक नज़र था आपने सलाह दी \t $ सीएक्सआर = $ _ [0] \t $ स्टेट = $ _ [1] और $ डीआईआर = $ _ [2]। मैं इन चरों में जानकारी ले रहा हूं और भंडारण कर रहा हूं और इसका उपयोग कर रहा हूं .. – Tamilan

+0

बहुत बहुत धन्यवाद .. यह लूप के लिए पहले की वजह से है। तुम सही हो। – Tamilan

संबंधित मुद्दे

 संबंधित मुद्दे