как перемещаться в диапазоне родительской папки без полного пути?

есть ли способ, как перейти к программе, которая находится в другой папке родительского каталога без использования полного пути?

atm у меня есть партия здесь:

FOLDER 1BATCHESbatch1.bat

, который использует программу, которая находится в:

FOLDER 1PROGRAMSpro.exe 

и моя партия выглядит так:

"%SYSTEMDRIVE%TempFOLDER 1PROGRAMSpro.exe" --input "%SYSTEMDRIVE%TempFOLDER 1SCRIPTscript.srpt" --output "%SYSTEMDRIVE%TempFOLDER 1FILESmyfile.x"

как вы можете видеть его заперты в месте с %SYSTEMDRIVE%Temp Итак, чтобы сделать мой скрипт "переносимым", есть ли что-то, что я мог бы заменить это %SYSTEMDRIVE%Temp?

или класть это другими словами: Я хотел бы отбросить все ocurances %SYSTEMDRIVE%Temp из моего пакета и заменить его чем-то, что если убрать папка 1 везде, где в моем компьютере, он будет работать

15
задан user902300
13.03.2023 12:29 Количество просмотров материала 2477
Распечатать страницу

2 ответа

  • папку, в которой находится пакет, можно получить с помощью %~dp0 (обратную косую черту)
  • файловая система заботится о относительное папки имя с .. смысл один уровень вверх.

на tree A: /F такой:

A:.
└───Folder 1
    ├───BATCHES
    │       batch1.bat
    │
    ├───FILES
    │       myfile.x
    │
    ├───PROGRAMS
    │       pro.exe
    │
    └───SCRIPT
            script.srpt

этого пакета:

:: A:\FOLDER 1\BATCHES\batch1.bat
@Echo off
Echo batch1 folder is: %~dp0
Echo ======================
for %%A in ("%~dp0..\PROGRAMS\pro.exe")   Do set "_Prg=%%~fA"
for %%A in ("%~dp0..\SCRIPT\script.srpt") Do set "_Inp=%%~fA"
for %%A in ("%~dp0..\FILES\myfile.x")     Do set "_Out=%%~fA"
Set _

Echo "%_Prg%" --input "%_Inp%" --output "%_Out%"

будет иметь следующие выходные данные:

A:\> "Folder 1\BATCHES\batch1.bat"
batch1 folder is: A:\Folder 1\BATCHES\
======================
_Inp=A:\Folder 1\SCRIPT\script.srpt
_Out=A:\Folder 1\FILES\myfile.x
_Prg=A:\Folder 1\PROGRAMS\pro.exe
"A:\Folder 1\PROGRAMS\pro.exe" --input "A:\Folder 1\SCRIPT\script.srpt" --output "A:\Folder 1\FILES\myfile.x"
0
отвечен LotPings 2023-03-14 20:17

рассмотрим следующий сценарий:

d:\bat> tree /F "d:\temp\FOLDER 1"
Folder PATH listing for volume VolName
Volume serial number is ABCD-EFGH
D:\TEMP\FOLDER 1
├───BATCHES
│       batch1.bat
│
└───PROGRAMS
        pro.exe

затем используйте %~dp0 ссылка относительно пакетного скрипта и .. относительный путь к директории как в следующем сценарии:

@echo OFF
SETLOCAL EnableExtensions
echo(
echo                                     listing "%~dp0"
dir /B /S "%~dp0"
echo                                     listing "%~dp0..\programs"
dir /B /S "%~dp0..\programs"

выход:

d:\bat> "d:\temp\FOLDER 1\BATCHES\batch1.bat"

                                    listing "d:\temp\FOLDER 1\BATCHES\"
d:\temp\FOLDER 1\BATCHES\batch1.bat
                                    listing "d:\temp\FOLDER 1\BATCHES\..\programs"
d:\temp\FOLDER 1\programs\pro.exe

d:\bat>

Примечание это %~dp0..\PROGRAMS отличается С ..\PROGRAMS в целом:

  • %~dp0..\PROGRAMS путь относительно каталога, в котором находится пакет проживает
    • (d:\temp\FOLDER 1\BATCHES\ в приведенном выше примере)
  • ..\PROGRAMS - путь относительно текущего каталога, из которого был запущен пакет
    • (d:\bat\ в приведенном выше примере)
0
отвечен JosefZ 2023-03-14 22:34

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

batch
cmd.exe
command-line
command-line-arguments
windows
Вверх