首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用CMD从文件路径中获取文件夹路径

如何使用CMD从文件路径中获取文件夹路径
EN

Stack Overflow用户
提问于 2009-03-19 02:56:22
回答 7查看 338.7K关注 0票数 160

我需要包含cmd文件的文件夹的路径。使用%0,我可以获取文件名。但是如何获得文件夹名称呢?

c:\temp\test.cmd >> test.cmd

P.S.我的当前目录!=脚本的文件夹。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-03-18 19:06:22

对于文件夹名称和驱动器,您可以使用:

代码语言:javascript
复制
echo %~dp0

您可以使用不同的修饰符获得更多信息:

代码语言:javascript
复制
%~I         - expands %I removing any surrounding quotes (")
%~fI        - expands %I to a fully qualified path name
%~dI        - expands %I to a drive letter only
%~pI        - expands %I to a path only
%~nI        - expands %I to a file name only
%~xI        - expands %I to a file extension only
%~sI        - expanded path contains short names only
%~aI        - expands %I to file attributes of file
%~tI        - expands %I to date/time of file
%~zI        - expands %I to size of file

The modifiers can be combined to get compound results:
%~dpI       - expands %I to a drive letter and path only
%~nxI       - expands %I to a file name and extension only
%~fsI       - expands %I to a full path name with short names only

这是"for /?“中的复制粘贴。命令。希望能有所帮助。

相关

Top 10 DOS Batch tips (Yes, DOS Batch...)显示batchparams.bat (链接到源代码作为要点):

代码语言:javascript
复制
C:\Temp>batchparams.bat c:\windows\notepad.exe
%~1     =      c:\windows\notepad.exe
%~f1     =      c:\WINDOWS\NOTEPAD.EXE
%~d1     =      c:
%~p1     =      \WINDOWS\
%~n1     =      NOTEPAD
%~x1     =      .EXE
%~s1     =      c:\WINDOWS\NOTEPAD.EXE
%~a1     =      --a------
%~t1     =      08/25/2005 01:50 AM
%~z1     =      17920
%~$PATHATH:1     =
%~dp1     =      c:\WINDOWS\
%~nx1     =      NOTEPAD.EXE
%~dp$PATH:1     =      c:\WINDOWS\
%~ftza1     =      --a------ 08/25/2005 01:50 AM 17920 c:\WINDOWS\NOTEPAD.EXE
票数 331
EN

Stack Overflow用户

发布于 2012-11-09 00:48:35

公认的答案是有帮助的,但是如果您没有使用传入的值,那么如何从路径中检索文件名并不是很明显。我能够从这个帖子中解决这个问题,但如果其他人没有那么幸运,这里是如何做到的:

代码语言:javascript
复制
@echo off
setlocal enabledelayedexpansion enableextensions

set myPath=C:\Somewhere\Somewhere\SomeFile.txt
call :file_name_from_path result !myPath!
echo %result%
goto :eof

:file_name_from_path <resultVar> <pathVar>
(
    set "%~1=%~nx2"
    exit /b
)

:eof
endlocal

现在,可以在任何地方使用:file_name_from_path函数来检索值,而不仅仅是用于传入的参数。如果参数可以以不确定的顺序传递到文件中,或者根本不将路径传递到文件中,这将非常有用。

票数 58
EN

Stack Overflow用户

发布于 2011-02-27 06:38:38

为了将这些赋值给变量,请确保不要在等号前面或后面添加空格:

代码语言:javascript
复制
set filepath=%~dp1
set filename=%~nx1

那么你应该没有问题。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/659647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档