#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 узнает, где искать эти файлы?