Я должен найти название родительского каталога для файла в DOS
для напр.
Предположим, что это - каталог
C:\test\pack\a.txt
У меня есть сценарий, который спрашивает меня имя файла
C:\\>getname.bat
enter file name: c:\test\pack\a.txt
теперь сценарий должен возвратить просто родительское название файла.
pack
а НЕ весь родительский путь к файлу.
c:\test\pack
см. этот вопрос
@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
вы можете использовать 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