Пытается использовать путь к текущему скрипту, а путь содержит пробелы. Я не могу заставить его работать:
C:\Test Directory>dir
Volume in drive C has no label.
Volume Serial Number is 7486-CEE6
Directory of C:\Test Directory
08/31/2010 07:28 PM <DIR> .
08/31/2010 07:28 PM <DIR> ..
08/31/2010 07:28 PM 20 echoit.cmd
08/31/2010 07:28 PM 94 test.cmd
2 File(s) 114 bytes
2 Dir(s) 344,141,197,312 bytes free
C:\Test Directory>type echoit.cmd
@echo off
echo %*
C:\Test Directory>type test.cmd
@echo off
for /f "tokens=*" %%a in ('%~dp0\echoit.cmd Hello World') do (
echo %%a
)
C:\Test Directory>test
'C:\Test' is not recognized as an internal or external command,
operable program or batch file.
C:\Test Directory>
Измените test.cmd
на следующее:
@echo off
for /f "tokens=*" %%a in ('"%~dp0\echoit.cmd" Hello World') do (
echo %%a
)
Вам нужно указать всю команду, за вычетом аргументов, в кавычках. Командная строка Windows обрабатывает набор слов как одну команду, когда весь набор заключен в кавычки, поэтому вы должны исключить аргументы Hello World
. Если бы вы включили это в кавычки, Windows восприняла бы это как часть команды, а не как аргументы.
как насчет использования ~fs0, т.е.
C:\Test Directory>type test.cmd
@echo off
for /f "tokens=*" %%a in ('%~fs0\echoit.cmd Hello World') do (
echo %%a
)
где %~fsI - расширяет %I до полного пути только с короткими именами
Вы пытались добавить цитаты?
for /f "tokens=*" %%a in ('"%~dp0\echoit.cmd" Hello World') do (
echo %%a
)