Показать полную графическую версию : [решено] Не могу передать полный путь %1 при использовании ""
Есть cmd файл:
@echo off
convert.exe "%1" "%~dpn1.png"
при перетягивании файла 1.tga на этот скрипт он выдаёт ошибку о неправильной команде (ошибка в пробеле), но если даже в пути не будет пробела то скрипт всё равно скажет о том, что команда "d:\1.tga" является ошибочной
однако, если я выполню команду в cmd.exe таким образом:
conv-script-to-png.cmd 1.tga
то команда выполнится и файл 1.tga конвертируется в 1.png
подскажите в чём может быть дело
Petya V4sechkin
16-09-2012, 09:11
А так?
@echo off
convert.exe "%~1" "%~dpn1.png"
Petya V4sechkin, пробовал, результат такой:
если 1.tga находится в папке со скриптом то работает, но если 1.tga находится в другой папке, то скрипт говорит ошибку типа:
"d:\1.tga"
или (если 1.tga в папке d:\test file\)
"file\1.tga"
т.е. возвращает путь после пробела. странно всё это, может что-нибудь ещё есть?
Petya V4sechkin
16-09-2012, 10:13
convert.exe кривой: не поддерживает пути или кавычки?
Смотрите результат:
@echo off
echo convert.exe "%~1" "%~dpn1.png"
pause
Разбирайтесь с синтаксисом конвертера (как указывать параметры).
Смотрите результат »
результат правильный:
convert.exe "D:\test file\1.tga" "D:\test file\1.png"
Для продолжения нажмите любую клавишу . . .
но если уберу echo пишет:
Недопустимый параметр: file\1.tga"
Для продолжения нажмите любую клавишу . . .
что за ерунда?
Разбирайтесь с синтаксисом конвертера (как указывать параметры). »
для конвертирования нужен входящий файл и выходящий файл, входящий файл может быть любого поддержимаего формата (в моём случае .tga), выходйщий файл будет формата заданного мной (в моём случае .png)
так работает:
convert.exe 1.tga 1.png
Petya V4sechkin
16-09-2012, 10:58
что за ерунда?
convert.exe - команда операционной системы для конвертации файловой системы FAT в NTFS, лежит в папке \Windows\system32. Ваш convert.exe явно делает что-то другое. Указывайте путь к EXE-файлу:
@echo off
путь_к_утилите\convert.exe "%~1" "%~dpn1.png"
Если convert.exe в той же папке, что и батник:
@echo off
"%~dp0convert.exe" "%~1" "%~dpn1.png"
Если convert.exe в той же папке, что и батник:
@echo off
"%~dp0convert.exe" "%~1" "%~dpn1.png" »отлинчно, этого я не знал, теперь работает отлично!
p.s.: скажите есть ли возможно преобразовывать файлы перетаскивая на скрипт несколько за раз?
сейчас преобразуется только один из перетаскиваемых
Petya V4sechkin
16-09-2012, 14:07
несколько за раз
@echo off
for %%i in (%*) do "%~dp0convert.exe" %%i "%%~dpni.png"
Последний раз редактировалось Petya V4sechkin, Сегодня в 17:08. Причина: упростил. »
Кстати — да. Я часто забываю о такой банальности вместо shift :(.
@echo off
for %%i in (%*) do "%~dp0convert.exe" %%i "%%~dpni.png" »работает, а разве экранировать %%i не нужно?
Foreigner
16-09-2012, 21:30
а разве экранировать %%i не нужно?,
Параметры при перетаскивании на батник и так передаются в кавычках, если есть пробелы, и с полным путем.
работает, а разве экранировать %%i не нужно? »
Ну, экранируйте:
… do "%~dp0convert.exe" "%%~i" "%%~dpni.png"
хотя в данном случае особого смысла нет.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.