Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Не могу передать полный путь %1 при использовании "" (http://forum.oszone.net/showthread.php?t=242751)

Tosyk 16-09-2012 08:51 1989459

Не могу передать полный путь %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 1989467

А так?
Код:

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


Tosyk 16-09-2012 09:31 1989472

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

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

"d:\1.tga"

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

"file\1.tga"

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

Petya V4sechkin 16-09-2012 10:13 1989488

convert.exe кривой: не поддерживает пути или кавычки?
Смотрите результат:
Код:

@echo off
echo convert.exe "%~1" "%~dpn1.png"
pause

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

Tosyk 16-09-2012 10:49 1989500

Цитата:

Цитата Petya V4sechkin
Смотрите результат »

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

Код:

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

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

Код:

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

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

Цитата:

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

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

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

convert.exe 1.tga 1.png

Petya V4sechkin 16-09-2012 10:58 1989503

Цитата:

Цитата 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"


Tosyk 16-09-2012 12:38 1989564

Цитата:

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

Код:

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

»

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

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

Petya V4sechkin 16-09-2012 14:07 1989610

Цитата:

Цитата Tosyk
несколько за раз

Код:

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


Iska 16-09-2012 20:15 1989831

Цитата:

Цитата Petya V4sechkin
Последний раз редактировалось Petya V4sechkin, Сегодня в 17:08. Причина: упростил. »

Кстати — да. Я часто забываю о такой банальности вместо shift :(.

Tosyk 16-09-2012 20:47 1989858

Цитата:

Цитата Petya V4sechkin
Код:

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

»

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

Foreigner 16-09-2012 21:30 1989887

Цитата:

а разве экранировать %%i не нужно?
,
Параметры при перетаскивании на батник и так передаются в кавычках, если есть пробелы, и с полным путем.

Iska 17-09-2012 06:25 1990053

Цитата:

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

Ну, экранируйте:
Код:

… do "%~dp0convert.exe" "%%~i" "%%~dpni.png"
хотя в данном случае особого смысла нет.


Время: 05:43.

Время: 05:43.
© OSzone.net 2001-