Передача первой строки списка Powershell

#powershell #encoding #pipe

#powershell #кодирование #конвейерная передача

Вопрос:

Я хочу преобразовать некоторые tiff-файлы в многостраничные tiff-файлы с помощью powershell и nconvert. Я запустил скрипт с

сценарий powershell.ps1 Путь кtiffs

Содержимое script.ps1 является

 $path=$args[0]
$File = dir $path*.tif | foreach {$_.name}
$File | Out-File debug.txt
nconvert.exe -overwrite -o binder.tiff -multi -out tiff -c 7 -l $File
  

И выдает ошибку только для первой первой строки $File !
Моя гипотеза, в первой строке есть спецификация. Теперь мой вопрос в том, как я могу преобразовать мою переменную $ File в ansi или utf8 без спецификации?

Комментарии:

1. В текущем виде, nconvert.exe не ссылается на debug.txt файл. Следовательно, его кодировка не имеет значения. Однако у Out-File командлета есть параметр -Encoding (по крайней мере, версии от 3.0 и выше). $File Переменная представляет собой массив строк в памяти и как таковая не содержит спецификацию.

2. @JosefZ Если $File не содержит спецификации, почему nconvert не хочет открывать первую строку?

3. Затем используйте $File | Out-File debug.txt -Encoding Default ( Default использует кодировку, соответствующую активной кодовой странице системы , т.е. кодировку ANSI), а затем … -l debug.txt

4. поскольку $File не является файлом, содержащим список файлов, Debug.txt является. $File — это массив в памяти. В вашей команде nconvert замените $File на (полный путь к debug.txt )

5. В качестве примечания вы записываете только ИМЕНА файлов $_.name . Я думаю, было бы лучше иметь файл, содержащий ПОЛНЫЕ имена файлов, включая path: $_.FullName . В противном случае, как nconvert узнает, где искать эти файлы?