Файл терминала терминала Cygwin - не может найти файл, но может, если я сам запускаю cmd, он делает - PullRequest
1 голос
/ 31 июля 2011

Под cygwin я создал to_png.bat и просто заполнил его командными строками inkscape, используемыми для преобразования моих файлов SVG в PNG.Если я сам выполню эти команды в командной строке, они будут выполнены успешно.Если я запускаю файл to_png.bat, я получаю следующую ошибку:

** (inkscape.exe: 3856): ПРЕДУПРЕЖДЕНИЕ **: указанный документ 'svgs / ace.svg' не может быть открыт (не существуетили не правильный SVG-файл)

Я, конечно, работаю из того же каталога, и я также попытался указать абсолютный путь на тот случай, если каким-то образом рабочая папка inkscape изменилась при запуске файла .bat.Я просто сделал это, используя вызовы python и os.system, и у меня возникла та же проблема.

РЕДАКТИРОВАТЬ: Запуск из командной строки DOS также не удается с той же проблемой.Находит inkscape в PATH, но inkscape не может найти файл .svg.Это проблема с одинарными кавычками?У меня есть имена файлов с пробелами в них, следовательно, цитирование

to_png.bat:

inkscape -h 120 -e 'pngs/ace.png' 'svgs/ace.svg'
inkscape -h 120 -e 'pngs/king.png' 'svgs/king.svg'
inkscape -w 120 -e 'pngs/queen.png' 'svgs/queen.svg'

Ответы [ 5 ]

2 голосов
/ 07 августа 2011

То, что вы пытаетесь сделать, в корне странно.

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

Вместо этого вы пытаетесь создать файл .bat, который запускается cmd.exe, используя собственный PATH и окружение. Почему?

Если вы действительно должны это сделать, начните с запуска cmd, чтобы открыть командную строку Windows, затем проверяйте переменную команд (и PATH) до тех пор, пока вы не сможете заставить ее работать правильно. Вы определенно будете изменять либо переменную PATH, либо командные строки, либо обе. Но если вы сможете запустить его из командной строки Windows, вы сможете просто скопировать эти командные строки в файл .bat и запустить их.

1 голос
/ 31 июля 2011

Разделитель каталогов в DOS / Windows является обратной косой чертой.Так что использование косой черты может работать под оболочкой cygwin, но не в .bat.

0 голосов
/ 31 июля 2011

В пакетных сценариях Windows символ ' не распознается как символ для разделения имен файлов. Вместо этого используется ". Кроме того, вам, вероятно, было бы лучше использовать обратную косую черту вместо прямой косой черты в качестве разделителей пути.

Таким образом, ваш скрипт должен выглядеть примерно так:

inkscape -h 120 -e "pngs\ace.png" "svgs\ace.svg"
inkscape -h 120 -e "pngs\king.png" "svgs\king.svg"
inkscape -w 120 -e "pngs\queen.png" "svgs\queen.svg"
0 голосов
/ 31 июля 2011

Замена одинарной галочки 'двойными галочками "решила проблему и позволила использовать пробелы в имени файла.

0 голосов
/ 31 июля 2011

Я думаю, что передача путей с косой чертой в команды Windows не всегда работает.

...