Получите название родительского каталога конкретного файла с помощью сценариев Пакета DOS

Я должен найти название родительского каталога для файла в DOS

для напр.

Предположим, что это - каталог

C:\test\pack\a.txt

У меня есть сценарий, который спрашивает меня имя файла

C:\\>getname.bat     
enter file name: c:\test\pack\a.txt   

теперь сценарий должен возвратить просто родительское название файла.

pack           

а НЕ весь родительский путь к файлу.

c:\test\pack   
15
задан Ross Ridge 5 September 2014 в 04:16
поделиться

2 ответа

см. этот вопрос

@echo OFF
set mydir="%~p1"
SET mydir=%mydir:\=;%

for /F "tokens=* delims=;" %%i IN (%mydir%) DO call :LAST_FOLDER %%i
goto :EOF

:LAST_FOLDER
if "%1"=="" (
    @echo %LAST%
    goto :EOF
)

set LAST=%1
SHIFT

goto :LAST_FOLDER
11
ответ дан 1 December 2019 в 01:17
поделиться

вы можете использовать vbscript, например, сохраните приведенное ниже как getpath.vbs

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
strFile = objArgs(0)
WScript.Echo objFS.GetParentFolderName(strFile)

, затем в командной строке или в вашем пакете, сделайте это

C:\test>cscript //nologo getpath.vbs c:\test\pack\a.txt
c:\test\pack

Если вам нужен пакетный метод, вы можете посмотреть для /? .

  %~fI        - expands %I to a fully qualified path name
  %~dI        - expands %I to a drive letter only
  %~pI        - expands %I to a path only
1
ответ дан 1 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: