如何从变量中提取路径和文件名?
Setlocal EnableDelayedExpansion
set file=C:\Users\l72rugschiri\Desktop\fs.cfg
我想在不使用任何函数或任何GOTO的情况下做到这一点。可能吗?
所有这些对我都有效:
@Echo Off
Echo Directory = %~dp0
Echo Object Name With Quotations=%0
Echo Object Name Without Quotes=%~0
Echo Bat File Drive = %~d0
Echo Full File Name = %~n0%~x0
Echo File Name Without Extension = %~n0
Echo File Extension = %~x0
Pause>Nul
输出:
Directory = D:\Users\Thejordster135\Desktop\Code\BAT\
Object Name With Quotations="D:\Users\Thejordster135\Desktop\Code\BAT\Path_V2.bat"
Object Name Without Quotes=D:\Users\Thejordster135\Desktop\Code\BAT\Path_V2.bat
Bat File Drive = D:
Full File Name = Path.bat
File Name Without Extension = Path
File Extension = .bat
您只能从(1)BAT本身的参数%1
,或(2)调用的参数%1
,或(3)变量%a
的本地参数中提取路径和文件名。
在帮助电话
或帮助
中,您可以找到更详细的信息:
%~1-展开%1以删除任何周围的引号(“)
%~f1-将%1扩展为完全限定路径名
%~d1-将%1扩展为仅驱动器号
%~p1-将%1扩展为仅路径
%~n1-将%1扩展为仅文件名
%~x1-将%1扩展为仅文件扩展名
%~s1-扩展路径仅包含短名称
%~a1-将%1扩展为文件属性
%~t1-将%1扩展为文件的日期/时间
%~z1-将%1扩展到文件大小
然后尝试以下方法:
将要解析为参数的字符串传递给调用
call :setfile ..\Desktop\fs.cfg
echo %file% = %filepath% + %filename%
goto :eof
:setfile
set file=%~f1
set filepath=%~dp1
set filename=%~nx1
goto :eof
或者,将文件名作为本地变量传递
for %%a in (..\Desktop\fs.cfg) do (
set file=%%~fa
set filepath=%%~dpa
set filename=%%~nxa
)
echo %file% = %filepath% + %filename%
@ECHO OFF
SETLOCAL
set file=C:\Users\l72rugschiri\Desktop\fs.cfg
FOR %%i IN ("%file%") DO (
ECHO filedrive=%%~di
ECHO filepath=%%~pi
ECHO filename=%%~ni
ECHO fileextension=%%~xi
)
不太确定你说的没有“功能”是什么意思
很明显,将ECHO
更改为SET
以设置变量,而不是将其更改为ECHOing...
有关完整列表,请参见文档。
ceztko的测试用例(供参考)
@ECHO OFF
SETLOCAL
set file="C:\Users\ l72rugschiri\Desktop\fs.cfg"
FOR /F "delims=" %%i IN ("%file%") DO (
ECHO filedrive=%%~di
ECHO filepath=%%~pi
ECHO filename=%%~ni
ECHO fileextension=%%~xi
)
评论:请看评论。
问题内容: 我只想从完整路径到文件获取文件夹路径。 例如,我想要得到(不包括)。 我已经尝试过这样的事情: 但是它给了我这样的结果: 这不是我需要的结果(为)。 关于如何获取文件路径的任何想法? 问题答案: 您几乎可以使用该功能了。您只需要加入字符串,如下所示。 虽然,我建议使用该函数来执行此操作,但是您只需要传递字符串即可,它将为您完成工作。由于您似乎在Windows上,因此也考虑使用该功能。一
我只想从文件的完整路径中获取文件夹路径。 例如,我希望只得到(不包括)。 我曾经尝试过这样的事情: 但它给了我这样一个结果: 这不是我需要的结果(是)。 关于如何获取文件路径有什么想法吗?
问题内容: 我已经在$ PATH变量中定义了6次相同的路径。 我没有注销来检查它是否有效。 如何删除重复项? $ PATH变量如下所示: 我如何将其重置为 问题答案: 您只需执行: 如果您想永久更改,则将其添加到当前会话中,将其添加到任何.bashrc,bash.bashrc,/ etc / profile- 适合您的系统和用户需求的位置。 注意:这是针对Linux的。对于新的编码器,我们将予以明
有没有可能不初始化类的所有字段,而只是使直类路径变量? 我知道我可以为此使用POST请求,但在这种情况下,我需要GET请求。 我想要这个@GetMapping(“/get/{classDTO}”) public String getMethod(@PathVariable classDTO classDTO) 而不是这个@GetMapping(“/get”) public String getMe
我的java bin文件夹包含java.exe @大卫华莱士 Microsoft Windows[版本6.3.9600](c)2013 Microsoft Corporation。保留所有权利。 C:\用户\Andy\AppData\漫游\Microsoft\Windows\开始菜单\Programs\Startup>
我正在尝试使用PathVariable创建一个包含Hello和name user的简单页面。如果你来的话http://localhost:8080/#/John你会在网站上看到“你好,约翰”。 我知道好Java,但在AngularJS我是初学者。 Hello控制器 HelloController在角 app.js 简单的页面hello/布局。html 谢谢你的帮助!