none
Неподдерживаемый формат пути RRS feed

  • Вопрос

  • Здравствуйте. Есть один код, который не работает согласно моему желанию. В нем я пытаюсь использовать массивы для задания пути к файлам, а также использования некоторых значений для параметра -pattern. 

    Проблема заключается в том, что при запуске сценария возникает ошибка в момент перенаправления вывода в файл, суть которой раскрыта в оглавлении темы. Или же я просто неверно использую цикл?

    Пользуясь случаем, хочу поинтересоваться по поводу варианта перенаправления вывода данных. При запуске этого сценария без использования массивов данные заносились в новый файл только при помощи >>. В чем причина этого явления?

     

     

    $name_pattern = "Name "
    
    $length_pattern = "Length"
    
    $creationtime_pattern = "Creationtime"
    
    $names_address = "c:\names.txt"
    
    $length_address = "c:\lengths.txt"
    
    $creationtime_address = "c:\creationtimes.txt"
    
    $patterns_array = $name_pattern, $length_pattern, $creationtime_pattern
    
    $addresses_array = $names_address, $length_address, $creationtime_address 
    
    for ($i = 0; $i -le 2; $i++)
    
    	{
    
    		ls -Include *.doc -Recurse | fl | out-file "docs.txt"
    
    		$test_content = Get-Content "docs.txt"
    
    		foreach ($test_str in $test_content)
    
    		{
    
    			$name_str = $test_str | Select-String -pattern "$patterns_array[i]" 
    
    			$name_str > "$addresses_array[i]"
    
    			###$name_str > "1.txt"
    
    		}
    
    	}
    

     

Ответы

  • Скрипт странный более чем. Я не понимаю зачем сортировать по трем разным свойствам и в три разных файла.Гораздо проще использовать select:

    dir -inc *.doc -rec | select Name,Length,Creationtime > result.txt

     

    Причем здесь ошибка - $patterns_array[i]" должно быть "$($patterns_array[$i])"


    $name_str = $test_str | Select-String -pattern "$patterns_array[i]"  - Зачем получать заголовки свойств(причем трижды)?

    $name_str > "$addresses_array[i]" - не добавляет записи в файл,а сохраняет лишь последний объект,используйте >> .

    Или использовать Export-Csv и уже продолжить работать скажем в Excel.

    Ps. Ваша проблема в том,что в имени пути присутствует символы [],вместо имени ваших файлов.

    • Помечено в качестве ответа test_ok 26 мая 2011 г. 6:16
    Отвечающий

Все ответы

  • Скрипт странный более чем. Я не понимаю зачем сортировать по трем разным свойствам и в три разных файла.Гораздо проще использовать select:

    dir -inc *.doc -rec | select Name,Length,Creationtime > result.txt

     

    Причем здесь ошибка - $patterns_array[i]" должно быть "$($patterns_array[$i])"


    $name_str = $test_str | Select-String -pattern "$patterns_array[i]"  - Зачем получать заголовки свойств(причем трижды)?

    $name_str > "$addresses_array[i]" - не добавляет записи в файл,а сохраняет лишь последний объект,используйте >> .

    Или использовать Export-Csv и уже продолжить работать скажем в Excel.

    Ps. Ваша проблема в том,что в имени пути присутствует символы [],вместо имени ваших файлов.

    • Помечено в качестве ответа test_ok 26 мая 2011 г. 6:16
    Отвечающий
  • Не спорю насчет скрипта, но мне всего лишь нужно было ознакомиться с возможностями использования массивов.  

    Действительно, после замены своего куска кода на

    "$($patterns_array[$i])"
    

    все стало выполняться так как нужно - никак не привыкну к необходимости ставить нужное количество знаков '$'.

    Благодарю за помощь.