К сожалению, я не могу комментировать ответы. Поэтому я должен написать новый.
Если вы хотите использовать команду для родной программы в командной строке, не используйте команду @Start.
@"pathtofile/program.exe" %*
При этом все параметры передаются в исходную программу, а все выходные данные передаются в вызывающую командную строку. С записью утилиты Directory в пути вы можете использовать ее в cmd, powershell и run-dialog.
В этом answere здесь, методика описана тоже.
PS: просто используйте .cmd вместо .bat, чтобы визуально отличить ярлык от обычного командного файла. Использование такое же.
РЕДАКТИРОВАТЬ: После тестирования я понял, что вызываемая программа не распознает необходимые файлы в той же папке (как хотелось бы из открывателя вопроса). Таким образом, требуется более сложный сценарий (все в пакете), чтобы перейти в папку программ, а затем выполнить und, а затем изменить dir.
Единственное, что вам нужно изменить в скрипте - это переменная progpath
для требуемой программы. Конечно, вы также можете пропустить все REM
команды (только комментируя код).
Вот сценарий:
@ECHO OFF
REM enable local variables
SETLOCAL
REM fullpath of program
SET progpath=C:\Dokumente und Einstellungen\Lukas Seidler\Desktop\notepad
REM save current direcory
SET currpath=%CD%
REM change to drive of prog
FOR %%I IN ("%progpath%") DO (%%~dI)
REM change to path of prog
FOR %%I IN ("%progpath%") DO (CD "%%~pI")
REM execute prog with optional parameters
FOR %%I IN ("%progpath%") DO ("%%~nxI" %*)
REM change to calling drive
FOR %%I IN ("%currpath%") DO (%%~dI)
REM change to calling path
FOR %%I IN ("%currpath%") DO (CD "%%~pnI\")
REM disable local variables
ENDLOCAL
REM EOF
Для легкого создания файла в dir утилит используйте другой скрипт и поместите его в dir утилит (для быстрого доступа). Я назвал это makehortcut.bat. Использование: makeshortcut "full\path\to\file"
. Просто измените переменную utilitypath
на вашу папку.
@ECHO OFF
SETLOCAL
SET utilitypath=D:\Apps\CommonFiles
SET outfile="%utilitypath%\%~n1.cmd"
ECHO @ECHO OFF > %outfile%
ECHO SETLOCAL >> %outfile%
ECHO SET progpath=%~f1 >> %outfile%
ECHO SET currpath=^%%CD^%% >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO (^%%^%%~dI) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO (CD "^%%^%%~pI") >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%progpath^%%") DO ("^%%^%%~nxI" ^%%*) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%currpath^%%") DO (^%%^%%~dI) >> %outfile%
ECHO FOR ^%%^%%I IN ("^%%currpath^%%") DO (CD "^%%^%%~pnI\") >> %outfile%
ECHO ENDLOCAL >> %outfile%
ECHO done.
ВНИМАНИЕ: Проверка аргументов не производится. Существующие файлы перезаписываются.