15 windows scripting cmd batch-file
我需要在DOS中找到文件的父目录的名称
对于前
假设这是目录
C:\test\pack\a.txt
Run Code Online (Sandbox Code Playgroud)
我有一个脚本,询问我文件名
C:\\>getname.bat
enter file name: c:\test\pack\a.txt
Run Code Online (Sandbox Code Playgroud)
现在脚本应该只返回文件的父名称.
pack
Run Code Online (Sandbox Code Playgroud)
而不是文件的整个父路径.
c:\test\pack
Run Code Online (Sandbox Code Playgroud)
小智 12
如果父目录名称包含空格,则上面的第一个答案不起作用.以下作品:
@echo off
setlocal
set ParentDir=%~p1
set ParentDir=%ParentDir: =:%
set ParentDir=%ParentDir:\= %
call :getparentdir %ParentDir%
set ParentDir=%ParentDir::= %
echo ParentDir is %ParentDir%
goto :EOF
:getparentdir
if "%~1" EQU "" goto :EOF
Set ParentDir=%~1
shift
goto :getparentdir
Run Code Online (Sandbox Code Playgroud)
使用参数"C:\ Temp\Parent Dir With Space\myfile.txt"调用上面的代码如下:
>GetParentDir "C:\Temp\Parent Dir With Space\myfile.txt"
ParentDir is Parent Dir With Space
Run Code Online (Sandbox Code Playgroud)
上面的工作是用冒号替换空格(这些在Windows路径中不应该存在),然后用空格替换目录分隔符,以便将各个目录作为单独的参数传递给getparentdir.函数getparentdir循环,直到找到它的最后一个参数.最后,结果中的任何冒号都被空格替换.
fox*_*ive 10
获取批处理文件的父文件夹非常简单:
@echo off
for %%a in ("%~dp0\.") do set "parent=%%~nxa"
echo %parent%
Run Code Online (Sandbox Code Playgroud)
对于文件路径的父级,根据问题:
@echo off
for %%a in ("c:\test\pack\a.txt") do for %%b in ("%%~dpa\.") do set "parent=%%~nxb"
echo %parent%
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43074 次 |
| 最近记录: |