Я хочу створити кілька пакетних файлів для автоматизації програми.
Моє запитання, коли я створюю пакетний файл, що таке поточний каталог? Це каталог, де знаходиться файл, чи це той самий каталог, який відображається в командному рядку, чи щось інше?
Я хочу створити кілька пакетних файлів для автоматизації програми.
Моє запитання, коли я створюю пакетний файл, що таке поточний каталог? Це каталог, де знаходиться файл, чи це той самий каталог, який відображається в командному рядку, чи щось інше?
Відповіді:
Зсередини вашого пакетного файлу:
%cd%посилається на поточний робочий каталог (змінна)%~dp0 посилається на повний шлях до каталогу пакетного файлу (статичний)%~dpnx0і %~f0обидва посилаються на повний шлях до каталогу партії та імені файлу (статичний).Дивіться також: Що означає% ~ dp0 і як це працює?
.cmdфайл і працює як адміністратор, %cd%подається C:\WINDOWS\system32і %~dp0надається каталог пакетного файлу з косою косою рисою.
Це , як правило , це каталог , з якого запускається пакетний файл, але якщо запустити пакетний файл з ярлика, інший стартовий каталог може бути надано. Крім того, коли ви перебуваєте в cmd, і ваш поточний каталог c:\dir3, ви все одно можете запустити пакетний файл, використовуючи c:\dir1\dir2\batch.batв цьому випадку поточний каталог c:\dir3.
У пакетному файлі% cd% - це найчастіше використовувана команда для поточного каталогу, хоча ви можете встановити власну змінну:
set mypath=%cd%
echo %mypath% (where %mypath% is the current directory that the batch file is sitting in)
Тому скажіть, що ви хотіли відкрити Myprog.exe. Якби вона була в одній папці, ви використовували б команду:
start %mypath%\Myprog.exe
Це відкриє Myprog з поточної папки.
Інший варіант - зробити каталог на C: під назвою AutomatePrograms. Потім ви переносите свої файли в цю папку, після чого їх можна відкрити за допомогою наступної команди:
start "" "C:\AutomatePrograms\Myprog1.exe"
start "" "C:\AutomatePrograms\Myprog2.exe"
start "" "C:\AutomatePrograms\Myprog3.exe"
%cd%він мінливий, тому запуск пакетного файлу з Windows Explorer як адміністратора дасть, C:\WINDOWS\system32що майже точно не те, що ви хочете. %~dp0є більш послідовним.
Скажіть, ви відкривали файл у вашому поточному каталозі. Командою було б:
start %cd%\filename.filetype
Я сподіваюся, що я відповів на ваше запитання.
Це каталог, з якого ви запускаєте пакетний файл. Наприклад, якщо ваша партія є, c:\dir1\dir2і ви це зробите cd c:\dir3, тоді запустіть пакет, поточний каталог буде c:\dir3.
Всього мої 2 копійки. Наступна команда не вдається, якщо викликається з пакетного файлу (Windows 7), розміщеного на pendrive:
xcopy /s /e /i %cd%Ala C:\KS\Ala
Але це робить цю роботу:
xcopy /s /e /i %~dp0Ala C:\KS\Ala
%~dp0
%0може дати ім'я поточної підпрограми, але%~dp0буде завжди давати повний шлях до виконуючого пакетного файлу.