none
replace не работает RRS feed

  • Вопрос

  • уменя в скрипте копирования работает функция образования пути, replace. почему не могу понять. раньше  работала но сейчас я  вставил  условие if  и она перестала работать. помогите. условие выделено жирным!!!

    foreach ($a in $source) {

    foreach ($b in $dest) {
    $s=$a + "\*"
    $s >> C:\$logname
     $v= get-childitem $s -include *.jpg
    #$v>> C:\$logname
    if ($i -eq 3) {$v= get-childitem $s -include 1.*
    $v >> C:\$logname}


      foreach ($file in ( $v  )){

     $Files= $file.fullname
      $datafile= $file.lastwritetime
      "обрабатываю $Files " >> C:\$logname
      $i >> C:\$logname
    $x= $source[$i]
     $source[$i] >> C:\$logname
    $y= $dest[$i]
     $dest[$i] >> C:\$logname

      $dest1Todest2=$file.fullname.replace($x,$y)
      "$dest1todest2 !!!!!!!!!!!!!!!!!!!!!!!!" >> C:\$logname
      if ((test-path -path $dest1Todest2) -ne $true)
      {
         "$file в $dest1todest2 не сущ" >> C:\$logname

       Copy-Item $File.FullName $dest1Todest2 -recurse -passthru

     }
       else {
             "$file существует в $dest1todest2" >> C:\$logname
       if ((dir $file.fullname).lastwritetime -gt (dir $dest1todest2).lastwritetime)

        { "$datafile новее" >> C:\$logname

         copy-item $file.fullname $dest1Todest2 -recurse
     }
         else
             { "_______________Файлы одинаковые. Обновление не требуется" >> C:\$logname
              }

    }
        }
    }$i=$i+1}

    }}
    copyfile -source C:\1\2, C:\1\3, C:\1\4, c:\1 -dest D:\2\2, D:\2\3, D:\2\4, d:\2 -count 4

    а вот лог!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


    13 октября 2010 г. 15:57:01
    C:\1\2\*
    обрабатываю C:\1\2\Водяные лилии.jpg
    0
    C:\1\2
    D:\2\2
    D:\2\2\Водяные лилии.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\2\Водяные лилии.jpg существует в D:\2\2\Водяные лилии.jpg
    _______________Файлы одинаковые. Обновление не требуется
    обрабатываю C:\1\2\Голубые холмы.jpg
    0
    C:\1\2
    D:\2\2
    D:\2\2\Голубые холмы.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\2\Голубые холмы.jpg существует в D:\2\2\Голубые холмы.jpg
    _______________Файлы одинаковые. Обновление не требуется
    обрабатываю C:\1\2\Зима.jpg
    0
    C:\1\2
    D:\2\2
    D:\2\2\Зима.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\2\Зима.jpg существует в D:\2\2\Зима.jpg
    _______________Файлы одинаковые. Обновление не требуется
    C:\1\2\*
    обрабатываю C:\1\2\Водяные лилии.jpg
    0
    C:\1\2
    D:\2\2
    D:\2\2\Водяные лилии.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\2\Водяные лилии.jpg существует в D:\2\2\Водяные лилии.jpg
    _______________Файлы одинаковые. Обновление не требуется
    обрабатываю C:\1\2\Голубые холмы.jpg
    0
    C:\1\2
    D:\2\2
    D:\2\2\Голубые холмы.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\2\Голубые холмы.jpg существует в D:\2\2\Голубые холмы.jpg
    _______________Файлы одинаковые. Обновление не требуется
    обрабатываю C:\1\2\Зима.jpg
    0
    C:\1\2
    D:\2\2
    D:\2\2\Зима.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\2\Зима.jpg существует в D:\2\2\Зима.jpg
    _______________Файлы одинаковые. Обновление не требуется
    C:\1\2\*
    обрабатываю C:\1\2\Водяные лилии.jpg
    0
    C:\1\2
    D:\2\2
    D:\2\2\Водяные лилии.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\2\Водяные лилии.jpg существует в D:\2\2\Водяные лилии.jpg
    _______________Файлы одинаковые. Обновление не требуется
    обрабатываю C:\1\2\Голубые холмы.jpg
    0
    C:\1\2
    D:\2\2
    D:\2\2\Голубые холмы.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\2\Голубые холмы.jpg существует в D:\2\2\Голубые холмы.jpg
    _______________Файлы одинаковые. Обновление не требуется
    обрабатываю C:\1\2\Зима.jpg
    0
    C:\1\2
    D:\2\2
    D:\2\2\Зима.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\2\Зима.jpg существует в D:\2\2\Зима.jpg
    _______________Файлы одинаковые. Обновление не требуется
    C:\1\2\*
    обрабатываю C:\1\2\Водяные лилии.jpg
    0
    C:\1\2
    D:\2\2
    D:\2\2\Водяные лилии.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\2\Водяные лилии.jpg существует в D:\2\2\Водяные лилии.jpg
    _______________Файлы одинаковые. Обновление не требуется
    обрабатываю C:\1\2\Голубые холмы.jpg
    0
    C:\1\2
    D:\2\2
    D:\2\2\Голубые холмы.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\2\Голубые холмы.jpg существует в D:\2\2\Голубые холмы.jpg
    _______________Файлы одинаковые. Обновление не требуется
    обрабатываю C:\1\2\Зима.jpg
    0
    C:\1\2
    D:\2\2
    D:\2\2\Зима.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\2\Зима.jpg существует в D:\2\2\Зима.jpg
    _______________Файлы одинаковые. Обновление не требуется
    C:\1\3\*
    обрабатываю C:\1\3\Водяные лилии.jpg
    1
    C:\1\3
    D:\2\3
    D:\2\3\Водяные лилии.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\3\Водяные лилии.jpg существует в D:\2\3\Водяные лилии.jpg
    _______________Файлы одинаковые. Обновление не требуется
    обрабатываю C:\1\3\Голубые холмы.jpg
    1
    C:\1\3
    D:\2\3
    D:\2\3\Голубые холмы.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\3\Голубые холмы.jpg существует в D:\2\3\Голубые холмы.jpg
    _______________Файлы одинаковые. Обновление не требуется
    C:\1\3\*
    обрабатываю C:\1\3\Водяные лилии.jpg
    1
    C:\1\3
    D:\2\3
    D:\2\3\Водяные лилии.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\3\Водяные лилии.jpg существует в D:\2\3\Водяные лилии.jpg
    _______________Файлы одинаковые. Обновление не требуется
    обрабатываю C:\1\3\Голубые холмы.jpg
    1
    C:\1\3
    D:\2\3
    D:\2\3\Голубые холмы.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\3\Голубые холмы.jpg существует в D:\2\3\Голубые холмы.jpg
    _______________Файлы одинаковые. Обновление не требуется
    C:\1\3\*
    обрабатываю C:\1\3\Водяные лилии.jpg
    1
    C:\1\3
    D:\2\3
    D:\2\3\Водяные лилии.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\3\Водяные лилии.jpg существует в D:\2\3\Водяные лилии.jpg
    _______________Файлы одинаковые. Обновление не требуется
    обрабатываю C:\1\3\Голубые холмы.jpg
    1
    C:\1\3
    D:\2\3
    D:\2\3\Голубые холмы.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\3\Голубые холмы.jpg существует в D:\2\3\Голубые холмы.jpg
    _______________Файлы одинаковые. Обновление не требуется
    C:\1\3\*
    обрабатываю C:\1\3\Водяные лилии.jpg
    1
    C:\1\3
    D:\2\3
    D:\2\3\Водяные лилии.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\3\Водяные лилии.jpg существует в D:\2\3\Водяные лилии.jpg
    _______________Файлы одинаковые. Обновление не требуется
    обрабатываю C:\1\3\Голубые холмы.jpg
    1
    C:\1\3
    D:\2\3
    D:\2\3\Голубые холмы.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\3\Голубые холмы.jpg существует в D:\2\3\Голубые холмы.jpg
    _______________Файлы одинаковые. Обновление не требуется
    C:\1\4\*
    обрабатываю C:\1\4\Закат.jpg
    2
    C:\1\4
    D:\2\4
    D:\2\4\Закат.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\4\Закат.jpg существует в D:\2\4\Закат.jpg
    _______________Файлы одинаковые. Обновление не требуется
    C:\1\4\*
    обрабатываю C:\1\4\Закат.jpg
    2
    C:\1\4
    D:\2\4
    D:\2\4\Закат.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\4\Закат.jpg существует в D:\2\4\Закат.jpg
    _______________Файлы одинаковые. Обновление не требуется
    C:\1\4\*
    обрабатываю C:\1\4\Закат.jpg
    2
    C:\1\4
    D:\2\4
    D:\2\4\Закат.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\4\Закат.jpg существует в D:\2\4\Закат.jpg
    _______________Файлы одинаковые. Обновление не требуется
    C:\1\4\*
    обрабатываю C:\1\4\Закат.jpg
    2
    C:\1\4
    D:\2\4
    D:\2\4\Закат.jpg !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\4\Закат.jpg существует в D:\2\4\Закат.jpg
    _______________Файлы одинаковые. Обновление не требуется
    c:\1\*


        Directory: C:\1


    Mode                LastWriteTime     Length Name                                                                     
    ----                -------------     ------ ----                                                                     
    -a---        20.04.2010     15:50          0 1.txt                                                                    
    обрабатываю C:\1\1.txt
    3
    c:\1
    d:\2
    C:\1\1.txt !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\1.txt существует в C:\1\1.txt
    _______________Файлы одинаковые. Обновление не требуется
    c:\1\*


        Directory: C:\1


    Mode                LastWriteTime     Length Name                                                                     
    ----                -------------     ------ ----                                                                     
    -a---        20.04.2010     15:50          0 1.txt                                                                    
    обрабатываю C:\1\1.txt
    3
    c:\1
    d:\2
    C:\1\1.txt !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\1.txt существует в C:\1\1.txt
    _______________Файлы одинаковые. Обновление не требуется
    c:\1\*


        Directory: C:\1


    Mode                LastWriteTime     Length Name                                                                     
    ----                -------------     ------ ----                                                                     
    -a---        20.04.2010     15:50          0 1.txt                                                                    
    обрабатываю C:\1\1.txt
    3
    c:\1
    d:\2
    C:\1\1.txt !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\1.txt существует в C:\1\1.txt
    _______________Файлы одинаковые. Обновление не требуется
    c:\1\*


        Directory: C:\1


    Mode                LastWriteTime     Length Name                                                                     
    ----                -------------     ------ ----                                                                     
    -a---        20.04.2010     15:50          0 1.txt                                                                    
    обрабатываю C:\1\1.txt
    3
    c:\1
    d:\2
    C:\1\1.txt !!!!!!!!!!!!!!!!!!!!!!!!
    C:\1\1.txt существует в C:\1\1.txt
    _______________Файлы одинаковые. Обновление не требуется

     

    13 октября 2010 г. 12:01

Ответы

  • метод replace объекта типа string, который вы используте в вскрипте, чувствителен к регистру, в отличие от оператора -replace.
    blog: http://shss.wordpress.com/
    • Помечено в качестве ответа frol89 15 октября 2010 г. 7:00
    14 октября 2010 г. 10:58

Все ответы

  • foreach ($a in $source) {

    foreach ($b in $dest) {
    $s=$a + "\*"
    $s >> C:\$logname
     $v= get-childitem $s -include *.jpg
    #$v>> C:\$logname
    if ($i -eq 3) {$v= get-childitem $s -include 1.*
    $v >> C:\$logname}

    Так, ведь, к моменту использования переменной $i ей ни разу не было присвоено значение, а, значит, условие if никода не будет выполнено.


    blog: http://shss.wordpress.com/
    • Предложено в качестве ответа Vasily GusevModerator 13 октября 2010 г. 19:27
    • Отменено предложение в качестве ответа frol89 14 октября 2010 г. 9:10
    13 октября 2010 г. 12:59
  • извините шапку функции не скопировал. $i = 0  в самом начале, и если судить по логу то условие выполняется, потомучто берутся файлы только с именем 1. проблема в формировании  переменной $dest1Todest2. почему-то она формируется правильно при всех $i,  кроме 3, которое указано в условии, путь неправильно формируется только в этом случае, почему не пойму . вроде бы и переменные x y  правильно формирует, а из них и должна формироваться $dest1Todest2. может условие коим образом влияет?

    function copyfile ($source, $dest, $count)
    {
    $i=0
    $logname="log-" + (get-date -format "yyyy-MM-dd") + ".log"
    get-date >> C:\$logname


    if ($i -lt $count){
    foreach ($a in $source) {

    foreach ($b in $dest) {
    $s=$a + "\*"
    $s >> C:\$logname
     $v= get-childitem $s -include *.jpg
    #$v>> C:\$logname
    if ($i -eq 3) {$v= get-childitem $s -include 1.*
    $v >> C:\$logname}

      foreach ($file in ( $v  )){

     $Files= $file.fullname
      $datafile= $file.lastwritetime
      "обрабатываю $Files " >> C:\$logname
      $i >> C:\$logname
    $x= $source[$i]
     $source[$i] >> C:\$logname
    $y= $dest[$i]
     $dest[$i] >> C:\$logname

      $dest1Todest2=$file.fullname.replace($x,$y)
      "$dest1todest2 !!!!!!!!!!!!!!!!!!!!!!!!" >> C:\$logname
      if ((test-path -path $dest1Todest2) -ne $true)
      {
         "$file в $dest1todest2 не сущ" >> C:\$logname

       Copy-Item $File.FullName $dest1Todest2 -recurse -passthru

     }
       else {
             "$file существует в $dest1todest2" >> C:\$logname
       if ((dir $file.fullname).lastwritetime -gt (dir $dest1todest2).lastwritetime)

        { "$datafile новее" >> C:\$logname

         copy-item $file.fullname $dest1Todest2 -recurse
     }
         else
             { "_______________Файлы одинаковые. Обновление не требуется" >> C:\$logname
              }

    }
        }
    }$i=$i+1}

    }}
    copyfile -source C:\1\2, C:\1\3, C:\1\4, c:\1 -dest D:\2\2, D:\2\3, D:\2\4, d:\2 -count 4

    помогите пожалуйста очень надо!!!

    14 октября 2010 г. 8:48
  • вроде бы разобрался))), если не ошибаюсь то  свойство replace  чувствительно к регистру!! у меня последние пути написаны с маленькими буквами, ведать из-за этого и не работало. правильно я понимаю??????????????
    14 октября 2010 г. 9:15
  • метод replace объекта типа string, который вы используте в вскрипте, чувствителен к регистру, в отличие от оператора -replace.
    blog: http://shss.wordpress.com/
    • Помечено в качестве ответа frol89 15 октября 2010 г. 7:00
    14 октября 2010 г. 10:58