Войти

Показать полную графическую версию : [решено] Не могу передать полный путь %1 при использовании ""


Tosyk
16-09-2012, 08:51
Есть 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"

Tosyk
16-09-2012, 09:31
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

Разбирайтесь с синтаксисом конвертера (как указывать параметры).

Tosyk
16-09-2012, 10:49
Смотрите результат »
результат правильный:

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"

Tosyk
16-09-2012, 12:38
Если 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"

Iska
16-09-2012, 20:15
Последний раз редактировалось Petya V4sechkin, Сегодня в 17:08. Причина: упростил. »
Кстати — да. Я часто забываю о такой банальности вместо shift :(.

Tosyk
16-09-2012, 20:47
@echo off
for %%i in (%*) do "%~dp0convert.exe" %%i "%%~dpni.png" »работает, а разве экранировать %%i не нужно?

Foreigner
16-09-2012, 21:30
а разве экранировать %%i не нужно?,
Параметры при перетаскивании на батник и так передаются в кавычках, если есть пробелы, и с полным путем.

Iska
17-09-2012, 06:25
работает, а разве экранировать %%i не нужно? »
Ну, экранируйте:
… do "%~dp0convert.exe" "%%~i" "%%~dpni.png"
хотя в данном случае особого смысла нет.




© OSzone.net 2001-2012