Як встановити робочий каталог виконуваного файлу за допомогою командного рядка перед його виконанням?


35

Якщо я запускаю програму в командному рядку, розташування якого вирішується за допомогою змінної середовища Path , робочий каталог програми, як правило, встановлюється в його інсталяційний каталог.

Я хотів би запустити таку програму з вікна консолі та встановити її робочий каталог у поточну чи іншу явну директорію. Я зміг це зробити, тимчасово скопіювавши програму в свою робочу директорію - чи є інший спосіб досягти цього в середовищі cmd.exe або powershell.exe?

Аналогія оболонки Windows із цим завданням полягає у створенні ярлика та відповідному встановленні властивості "Почати в".

Відповіді:


40

Щоб явно встановити робочий каталог, рішенням PowerShell було б використовувати Start-Processкомандлет з -WorkingDirectoryпараметром.

Start-Process -FilePath notepad.exe -WorkingDirectory c:\temp

Використовуючи псевдонім start, позиційний параметр та часткову назву параметра, це може бути записано як:

start notepad.exe -wo c:\temp

CMD також має STARTкоманду. Для цього використовуйте /Dпараметр, щоб вказати робочий каталог:

START /D c:\temp notepad.exe

6

Нижче буде працювати, зробити відповідні заміни та зберегти їх з .cmdрозширенням.

@echo off 
C:
chdir C:\desired\directory
C:\full\path\of\command.exe

Помістіть цей пакетний файл у каталог у своєму, %PATH%і ви зможете викликати його з будь-якого cmd.exeпримірника.


1
Зауважте, що функціональність може виникати, якщо робочий каталог та виконуваний файл не на одному розділі / диску.
MBraedley

2
@LawrenceC, однак для цього рішення потрібен тимчасовий файл. Краще, якщо це вдасться досягти, не використовуючи тимчасових файлів
Pacerier
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.