CMD/BAT - [решено] Не могу передать полный путь %1 при использовании ""

Аватара пользователя
Tosyk

CMD/BAT - [решено] Не могу передать полный путь %1 при использовании ""

Сообщение Tosyk »

Есть 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



подскажите в чём может быть дело
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Не могу передать полный путь %1 при использовании ""

Сообщение Foreigner »

Цитата:



а разве экранировать %%i не нужно?



,

Параметры при перетаскивании на батник и так передаются в кавычках, если есть пробелы, и с полным путем.
Аватара пользователя
Tosyk

Re: CMD/BAT - [решено] Не могу передать полный путь %1 при использовании ""

Сообщение Tosyk »

Petya V4sechkin, пробовал, результат такой:



если 1.tga находится в папке со скриптом то работает, но если 1.tga находится в другой папке, то скрипт говорит ошибку типа:



"d:\1.tga"



или (если 1.tga в папке d:\test file\)



"file\1.tga"



т.е. возвращает путь после пробела. странно всё это, может что-нибудь ещё есть?
Аватара пользователя
Petya V4sechkin

Re: CMD/BAT - [решено] Не могу передать полный путь %1 при использовании ""

Сообщение Petya V4sechkin »

Цитата Petya V4sechkin:



Смотрите результат
CMD/BAT - [решено] Не могу передать полный путь %1 при использовании ""




результат правильный:





Код:

Код: Выделить всё

convert.exe "D:\test file\1.tga" "D:\test file\1.png"
Для продолжения нажмите любую клавишу . . .

но если уберу echo пишет:





Код:

Код: Выделить всё

Недопустимый параметр: file\1.tga"
Для продолжения нажмите любую клавишу . . .

что за ерунда?




Цитата Petya V4sechkin:



Разбирайтесь с синтаксисом конвертера (как указывать параметры).
CMD/BAT - [решено] Не могу передать полный путь %1 при использовании ""




для конвертирования нужен входящий файл и выходящий файл, входящий файл может быть любого поддержимаего формата (в моём случае .tga), выходйщий файл будет формата заданного мной (в моём случае .png)



так работает:



Код:

Код: Выделить всё

convert.exe 1.tga 1.png
Аватара пользователя
Tosyk

Re: CMD/BAT - [решено] Не могу передать полный путь %1 при использовании ""

Сообщение Tosyk »

Цитата Tosyk:



что за ерунда?



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"
Аватара пользователя
Petya V4sechkin

Re: CMD/BAT - [решено] Не могу передать полный путь %1 при использовании ""

Сообщение Petya V4sechkin »

Цитата Petya V4sechkin:



Если convert.exe в той же папке, что и батник:





Код:

Код: Выделить всё

@echo off
"%~dp0convert.exe" "%~1" "%~dpn1.png"

CMD/BAT - [решено] Не могу передать полный путь %1 при использовании ""




отлинчно, этого я не знал, теперь работает отлично!



p.s.: скажите есть ли возможно преобразовывать файлы перетаскивая на скрипт несколько за раз?

сейчас преобразуется только один из перетаскиваемых
Аватара пользователя
Tosyk

Re: CMD/BAT - [решено] Не могу передать полный путь %1 при использовании ""

Сообщение Tosyk »

Цитата Tosyk:



несколько за раз





Код:

Код: Выделить всё

@echo off
for %%i in (%*) do "%~dp0convert.exe" %%i "%%~dpni.png"
Аватара пользователя
Petya V4sechkin

Re: CMD/BAT - [решено] Не могу передать полный путь %1 при использовании ""

Сообщение Petya V4sechkin »

Цитата Petya V4sechkin:



Последний раз редактировалось Petya V4sechkin, Сегодня в 17:08. Причина: упростил.
CMD/BAT - [решено] Не могу передать полный путь %1 при использовании ""




Кстати — да. Я часто забываю о такой банальности вместо shift Изображение.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Не могу передать полный путь %1 при использовании ""

Сообщение Iska »

Цитата Petya V4sechkin:





Код:

Код: Выделить всё

@echo off
for %%i in (%*) do "%~dp0convert.exe" %%i "%%~dpni.png"

CMD/BAT - [решено] Не могу передать полный путь %1 при использовании ""




работает, а разве экранировать %%i не нужно?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»